首页 文章

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

提问于
浏览
1

我正在使用HTML和Javascript编写网页 . 此页面在WPF WebBrowser控件中打开 . 问题是这个页面上的JavaScript直接在Internet Explorer中正常工作,但在WebBrowser控件中没有,即使我已经设置为使用Internet Explorer 11进行WebBrowser控件 .

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

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

1 回答

  • 1

    您的问题可能是由于使用旧版IE的 WebBrowser 控件而不是在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();
    

相关问题