[winform]AxWebBrowser如何捕捉javascript发出的事件
例如AxWebBrowser 浏览一个网页,网页上的关闭此页按钮(window.close),会弹 出一个确认对话框,如何在code部分捕捉用户点击的是哪一个?想在2个选择的事件都作自己的一个方法
例如
if(button == "Yes "){
OnClose();
}else{
OnCloseNo();
}
------解决方案--------------------捕获WindowsClosing事件自己显示一个确认对话框
------解决方案--------------------不明白为什么不用.net自带的WebBrowser控件?
------解决方案--------------------if(button == "Yes "){
CallClose();
}else{
CallCloseNo();
}
在网页的js脚本中写
function callClose()
{
window.external.CallUIClose
}
在程序中写
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IJsCall
{
void CallUIClose();
......
} // interface IJsCall
public class JsCallClass : IJsCall
{
private Form1 frm;
public JsCallClass(Form1 pfrm)
{
this.frm = pfrm;
}
#region IJsCall 成员
public void CallUIClose()
{
......
}
......
}
还有这一段
class test : IDocHostUIHandler
{
private PlayerMainForm frm;
public MarqueeUIHandler(PlayerMainForm pfrm)
{
this.frm = pfrm;
}
#region IDocHostUIHandler 成员
public void EnableModeless(int fEnable)
{
// TODO: 添加 MarqueeUIHandler.EnableModeless 实现
}
public void GetOptionKeyPath(out string pchKey, uint dw)
{
// TODO: 添加 MarqueeUIHandler.GetOptionKeyPath 实现
pchKey = null;
}
public void TranslateAccelerator(ref tagMSG lpmsg, ref Guid pguidCmdGroup, uint nCmdID)
{
// TODO: 添加 MarqueeUIHandler.TranslateAccelerator 实现
}
public void FilterDataObject(MsHtmHstInterop.IDataObject pDO, out MsHtmHstInterop.IDataObject ppDORet)
{
// TODO: 添加 MarqueeUIHandler.FilterDataObject 实现
ppDORet = null;
}
public void OnFrameWindowActivate(int fActivate)
{
// TODO: 添加 MarqueeUIHandler.OnFrameWindowActivate 实现
}
public void UpdateUI()
{
// TODO: 添加 MarqueeUIHandler.UpdateUI 实现
}
public void ShowContextMenu(uint dwID, ref MsHtmHstInterop.tagPOINT ppt, object pcmdtReserved, object pdispReserved)
{
// TODO: 添加 MarqueeUIHandler.ShowContextMenu 实现
}
public void TranslateUrl(uint dwTranslate, ref ushort pchURLIn, System.IntPtr ppchURLOut)
{
// TODO: 添加 MarqueeUIHandler.TranslateUrl 实现
}
public void ShowUI(uint dwID, IOleInPlaceActiveObject pActiveObject, IOleCommandTarget pCommandTarget, IOleInPlaceFrame pFrame, IOleInPlaceUIWindow pDoc)
{
// TODO: 添加 MarqueeUIHandler.ShowUI 实现
}
public void GetExternal(out object ppDispatch)
{
// TODO: 添加 MarqueeUIHandler.GetExternal 实现
ppDispatch = new JsCallClass(frm);
}
public void ResizeBorder(ref MsHtmHstInterop.tagRECT prcBorder, IOleInPlaceUIWindow pUIWindow, int fRameWindow)
{
// TODO: 添加 MarqueeUIHandler.ResizeBorder 实现
}
public void GetDropTarget(IDropTarget pDropTarget, out IDropTarget ppDropTarget)
{
// TODO: 添加 MarqueeUIHandler.GetDropTarget 实现
ppDropTarget = null;
}
public void GetHostInfo(ref _DOCHOSTUIINFO pInfo)
{
pInfo.dwFlags |= ( 0x08/*0x08