【问题标题】:Is there a possibility to debug JavaScript code in a WebBrowser control是否有可能在 WebBrowser 控件中调试 JavaScript 代码
【发布时间】:2016-04-21 08:50:11
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    是的,您可以调试您的网页。 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 2011-03-21
      相关资源
      最近更新 更多