我使用以下代码在Windows Phone 7.1中的WebBrowser控件中加载网页:
public MainPage()
{
InitializeComponent();
this.webBrowser1.IsScriptEnabled = true;
this.webBrowser1.Navigate(new Uri("http://xkcd.com/"));
this.webBrowser1.MouseMove += new MouseEventHandler(mouseMove);
}
void mouseMove(object sender, MouseEventArgs e)
{
var a = this.webBrowser1.InvokeScript(
"eval",
new[] { "document.body.removeChild(document.getElementById('topContainer')); " });
}
抛出以下异常:An unknown error has occurred. Error: 80020101.
代码document.body.removeChild(document.getElementById('topContainer'));
在chrome控制台中运行,但在此处引发异常。为什么?请注意,javascript会被执行,只会引发异常。
答案 0 :(得分:2)
我设法通过将InvokeScript
放在WebBrowser
而不是MouseMove
的已加载事件中来使代码生效。
我认为MouseMove
事件触发过快,导致WebBrowser
控件出现同步问题。
以下是有效的代码:
public MainPage()
{
InitializeComponent();
this.webBrowser1.IsScriptEnabled = true;
this.webBrowser1.Navigate(new Uri("http://xkcd.com/"));
this.webBrowser1.LoadCompleted += webBrowser1_LoadCompleted;
}
void webBrowser1_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
var a = this.webBrowser1.InvokeScript(
"eval",
new[] { "document.body.removeChild(document.getElementById('topContainer')); " });
}