我有一个内部的web浏览器的应用程序:
发帖时我的网页我有JavaScript弹出警报/消息框亮起,我需要点击确定。 下面是我的javascript创建警报:
function delete(){
if (confirm('Are you sure you wish to delete this ?')){
document.forms.item.action = "edit.asp?action=delete";
document.forms.item.submit();
}
}
我在寻找了一段时间,但没有可能尚未找到任何有效的解决方案......
在此先感谢您的帮助!
实施IDocHostShowUI :: ShowMessage ,并显示自己的对话框,或者只是返回S_OK。
注:链接断开。 这里的解决方案的代码:
IDocHostShowUI = interface(IUnknown)
['{c4d244b0-d43e-11cf-893b-00aa00bdce1a}']
function ShowMessage(hwnd: THandle; lpstrText: POleStr; lpstrCaption: POleStr;
dwType: longint; lpstrHelpFile: POleStr; dwHelpContext: longint;
var plResult: LRESULT): HRESULT; stdcall;
end;
TShowMessageEvent = function(Sender: TObject; HWND: THandle;
lpstrText: POleStr; lpstrCaption: POleStr; dwType: Longint; lpstrHelpFile: POleStr;
dwHelpContext: Longint; var plResult: LRESULT): HRESULT of object;
TWebBrowser = class(SHDocVw.TWebBrowser, IDocHostShowUI)
private
fOnShowMessage: TShowMessageEvent;
protected
function ShowMessage(HWND: THandle; lpstrText: POleStr; lpstrCaption: POleStr;
dwType: Longint; lpstrHelpFile: POleStr; dwHelpContext: Longint;
var plResult: LRESULT): HRESULT; stdcall;
published
property OnShowMessage: TShowMessageEvent read fOnShowMessage write
fOnShowMessage;
end;
function TWebBrowser.ShowMessage(HWND: THandle; lpstrText, lpstrCaption: POleStr;
dwType: Integer; lpstrHelpFile: POleStr; dwHelpContext: Integer;
var plResult: LRESULT): HRESULT;
begin
if Assigned(fOnShowMessage) then
Result := fOnShowMessage(Self, HWND, lpstrText, lpStrCaption, dwType,
lpStrHelpFile, dwHelpContext, plResult)
else
Result:= S_OK;
end;
如果这是非常有限的,内部的使用,你可以做一个肮脏
procedure TForm1.Timer1Timer(Sender: TObject);
const
TargetCaption = 'Meddelande från webbsida';
var
S: string;
len: integer;
begin
SetLength(S, 127);
len := GetWindowText(Application.ActiveFormHandle, PChar(S), 127);
if len = 0 then Exit;
SetLength(S, len);
if S = TargetCaption then
SendMessage(Application.ActiveFormHandle, WM_COMMAND, ID_OK, 0);
end;
其中TargetCaption
是已知的字幕TWebBrowser
弹出,确认,或提示对话框。 这可能操作系统版本和语言版本有所不同,因此这种方式只接受在一个非常有限的,在企业内部的应用程序,它是确定以“更新”每一个新的Windows SP的应用程序...
顺便说一句,“从网页信息”是瑞典语“从网页的消息”。
上的按钮alert()
confirm()
和prompt()
盒是不编写脚本。 使用HTML / CSS模态对话框代替。
文章来源: HOWTO: Simulate click OK in WebBrowser alert/messagebox that initiated by a JavaScript? (Delphi)