我可以在Windows窗体中托管的浏览器控件中检测到jscript window.close事件吗?

时间:2013-03-15 11:11:16

标签: c# javascript

我的客户端要求在用户登录时显示“启动”屏幕。目前,我的客户端使用Windows应用程序来实例化 System.Windows.Forms.WebBrowser 类来托管网页,但由于各种原因,这是不合适的。

我的客户要求我创建一个不含铬的模态Windows窗体,其中包含一个将托管该网页的浏览器控件。此页面包含一条消息和两个按钮:“是”(导航到另一个URL)和“否”(关闭浏览器)。

在当前(不满意)的化身中,“否”按钮调用包含

的javascript函数
window.close();

此刻工作正常,但很明显,如果(在新版本中)网页托管在Windows窗体内的浏览器控件中,则window.close不会自动冒泡到Windows窗体。

那么,Windows窗体是否有办法“检测”浏览器控件中发生的window.close事件?

我希望前面的内容很清楚。

非常感谢

爱德华

2 个答案:

答案 0 :(得分:0)

而不是调用window.close从javascript中调用外部C#函数,类似这样

window.external.CloseWindow

并将您的对象设置为脚本

webBrowser1.ObjectForScripting = this;

你的C#类应该有CloseWindow函数

或覆盖window.close,如

window.close=function() { window.external.CloseWindow(); }

答案 1 :(得分:0)

谢谢大家。

通过一些额外的挖掘,Sudhakar B的答案有效。我不得不添加

   [System.Runtime.InteropServices.ComVisibleAttribute(true)]

装饰班级。