繁体   English   中英

是否有可能在 WebBrowser 控件中调试 JavaScript 代码

[英]Is there a possibility to debug JavaScript code in a WebBrowser control

我正在使用 HTML 和 Javascript 编写网页。 此页面在 WPF WebBrowser 控件中打开。 问题是此页面上的 JavaScript 可以直接在 Internet Explorer 中正常工作,但在 WebBrowser 控件中却无法正常工作,即使我已设置为将 Internet Explorer 11 用于 WebBrowser 控件。

所以我无法在通常的浏览器中重现这个问题来调试它。 它只能在 WebBrowser 控件中重现。

是否有可能在 WebBrowser 中调试 JavaScript 代码以找到问题? 我在 WebBrowser 的上下文菜单中没有看到任何带有“Inspect”字样的项目。

您的问题可能是由于WebBrowser控件使用的 IE 版本比您在 Windows 中独立运行的版本旧。

是的,您可以调试您的网页。 JavaScript 有一个名为window.onerror的事件,它的作用类似于全局 try/catch。 这对于捕获意外异常非常有用。

将此添加到您的 JavaScript 以添加您自己的事件处理程序:

window.onerror = function(message, url, lineNumber) 
{ 
  window.external.errorHandler(message, url, lineNumber);
}

事件处理程序将调用 WPF 应用程序中的方法以显示错误详细信息。

在您的 WPF 应用程序中创建一个这样的类,您的 JavaScript 将能够访问它。

[System.Runtime.InteropServices.ComVisibleAttribute(true)] 
public class ScriptInterface 
{ 
    void errorHandler(string message, string url, string lineNumber) 
    { 
        MessageBox.Show(string.Format("Message: {0}, URL: {1}, Line: {2}"));
    } 
}

然后将 WebBrowser 控件的ObjectForScripting属性设置为处理程序类的实例:

webBrowser1.ObjectForScripting = new ScriptInterface();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM