gpt4 book ai didi

wpf - 使用 WPF WebBrowser 控件时如何抑制脚本错误?

转载 作者:行者123 更新时间:2023-12-03 06:11:28 25 4
gpt4 key购买 nike

我有一个 WPF 应用程序,它使用 WPF WebBrowser 控件在平面显示器上向开发人员显示有趣的网页(如新闻源)。

问题是我偶尔会遇到 HTML 脚本错误,该错误会弹出一条令人讨厌的 IE 错误消息,询问我是否要“停止在此页面上运行脚本”。有没有办法抑制这个错误检查?

注意:我已经在 IE 设置中禁用了脚本调试。

最佳答案

这是我刚刚用反射做出的解决方案。解决问题:)我在 Navigated 事件中运行它,因为在那之前 ActiveX 对象似乎不可用。

它的作用是在底层 ActiveX 对象上设置 .Silent 属性。这与 .ScriptErrorsSuppressed 属性相同,它是 Windows 窗体的等效属性。

 public void HideScriptErrors(WebBrowser wb, bool Hide) {
FieldInfo fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
if (fiComWebBrowser == null) return;
object objComWebBrowser = fiComWebBrowser.GetValue(wb);
if (objComWebBrowser == null) return;
objComWebBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { Hide });
}

更好的版本,可以随时运行,而不是在 .Naviged 事件之后运行:

public void HideScriptErrors(WebBrowser wb, bool hide) {
var fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
if (fiComWebBrowser == null) return;
var objComWebBrowser = fiComWebBrowser.GetValue(wb);
if (objComWebBrowser == null) {
wb.Loaded += (o, s) => HideScriptErrors(wb, hide); //In case we are to early
return;
}
objComWebBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { hide });
}

如果第二个示例有任何问题,请尝试将 wb.Loaded 替换为 wb.Naviged。

关于wpf - 使用 WPF WebBrowser 控件时如何抑制脚本错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1298255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com