1

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

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

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

4

1 回答 1

1

您的问题可能是由于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();
于 2016-04-21T13:39:35.047 回答