我正在使用HTML和Javascript编写网页。此页面在WPF WebBrowser控件中打开。问题是这个页面上的JavaScript在Internet Explorer中可以正常工作但在WebBrowser控件中没有,即使我已经设置使用Internet Explorer 11进行WebBrowser控件。
因此我无法在通常的浏览器中重现该问题以进行调试。它只能在WebBrowser控件中重现。
是否有可能在WebBrowser中调试JavaScript代码以便能够找到问题?我没有在WebBrowser的上下文菜单中看到任何带有“Inspect”字样的项目。
答案 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}}