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

时间:2016-04-21 08:50:12

标签: javascript wpf debugging webbrowser-control inspect-element

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

因此我无法在通常的浏览器中重现该问题以进行调试。它只能在WebBrowser控件中重现。

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

1 个答案:

答案 0 :(得分:1)

您的问题可能是由于使用旧版IE的window.onerror控制而不是在Windows中独立运行。

是的,您可以调试您的网页。 JavaScript有一个名为window.onerror = function(message, url, lineNumber) { window.external.errorHandler(message, url, lineNumber); } 的事件,其作用类似于全局try / catch。这非常适合捕获意外的异常。

将其添加到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}"));
    } 
}

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

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

ObjectForScripting

然后将WebBrowser控件的webBrowser1.ObjectForScripting = new ScriptInterface(); 属性设置为处理程序类的实例:

{{1}}