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

Is there a possibility to debug JavaScript code in a WebBrowser control

本文关键字:调试 JavaScript 代码 控件 有可能 WebBrowser 是否      更新时间:2023-09-26

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

所以我无法在普通浏览器中重现该问题来调试它。它只能在 Web 浏览器控件中重现。

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

您的问题可能是由于使用旧版本的 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();