如果您在弹出弹出窗口时遇到问题,我已经为您提供了一个解决方案,并且如果您想在客户端机器上禁用/启用 javascript(或者甚至只是读取/查询它是否已启用/禁用)我也为您提供了该答案,我们开始吧:
您要禁用哪个弹出消息?如果是警报消息,试试这个,显然根据您的特定需求解析窗口或框架对象,我只是假设顶级文档,但如果您需要 iframe,您可以使用 window.frames(0) 访问它。对于第一帧等等...(关于 JavaScript 部分)...这里有一些代码,假设 WB 是您的网络浏览器控件...
WB.Document.parentWindow.execScript "window.alert = function () { };", "JScript"
但是,在您的情况下,由于您想禁用打印,只需将 .alert 替换为 .print。
您必须在整个页面加载完成后才运行上述代码,我知道这很难做到(并且尚未发布完整证明版本)但是我一直在这样做(完整证明)一段时间以来,如果您阅读我之前标记为“webbrowser”和“webbrowser-control”的一些答案,您可以收集有关如何准确执行此操作的提示,但如果您想取消.confirm JavaScript 消息,只需将 window.alert 替换为 window.confirm(当然,使用正确的对象限定您的 window.object 以到达您正在使用的文档层次结构)。您还可以使用上述技术禁用 .print 方法以及新的 IE9 .prompt 方法。
这是一个常量字符串(在 VB 中声明),它将摆脱 4 个弹出窗口,包括新的 IE9 弹出窗口。此外,它将摆脱 onbeforeunload 事件,并且它将在其运行的每个页面上执行所有这些操作。如果你有框架,你也不需要在框架中运行它们,只在父文档中运行就足够了。在这里(在 VB6 中声明), _ 只是为了便于阅读,我放置在此处的行延续,& 用于字符串连接,而 ;在 javascript 中只是意味着将下面的内容视为另一行代码。这样,您可以在一个物理行中运行多行代码(我认为是 5 行)。
Public Const DEFAULT_JS_TO_RUN_AFTER_EACH_PAGE_LOAD As String = _
& "window.alert = function () { }; window.confirm = function () { }; " _
& "window.prompt = function () { }; window.print = function () { }; " _
& "window.onbeforeunload = function () { };"
如果您想完全禁用 JavaScript,您可以使用注册表来执行此操作,并且您必须在 webbrowser 控件加载到内存之前更改注册表,并且每次更改(打开和关闭)时都必须重新加载webbrowser 控制进出内存(或只是重新启动您的应用程序)。
注册表项是
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings\Zones\ - 键名是 1400,禁用它的值是
3,启用它是0。
当然,因为 Zones 键下有 5 个区域,所以您需要为活动区域或所有区域更改它以确保确定。但是,如果您只想抑制 js 对话框弹出消息,则实际上不需要这样做。
让我知道你的情况,如果我能提供进一步的帮助。