WP8.1调用脚本错误

3

我正在开发一个Windows Phone 8.1应用程序。我在WebBrowser类的InvokeScript方法上遇到了问题。 在我的XAML中,我有以下代码:

当我运行这段代码时:

myWebBrowser.Loaded += (object sender, RoutedEventArgs e) =>
{
    webBrowser.IsScriptEnabled = true;
    webBrowser.InvokeScript("eval", "alert('foo')");
};

在调用InvokeScript方法的那行代码上,我遇到了 System.SystemException 异常,错误提示如下:

发生未知错误。错误码: 80020006。

但在 Windows Phone 8 上运行相同的代码时,没有出现异常。

有什么想法,为什么在 WP 8.1 上会出现错误?


它是DISP_E_UNKNOWNNAME,“未知名称”。请注意MSDN Library文章中的说明:“InvokeScript在Windows 8.1之后的版本中可能会被更改或不可用。请改用InvokeScriptAsync。”第二个参数必须是string[],而不是string。 - Hans Passant
1个回答

5

我在这里找到了解决方案。

Loaded事件被调用得太早了。我改用了LoadCompleted事件。只要我导航到某个页面(我一直在放置webBrowser.NavigateToString("");),当WebBrowser控件完全加载内容时,LoadCompleted事件将被调用。

以下是新代码:

webBrowser.LoadCompleted += (object sender, NavigationEventArgs e) =>
{
    webBrowser.IsScriptEnabled = true;
    webBrowser.InvokeScript("eval", "alert('foo');");
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接