WP7 InvokeScript error

本文关键字:error InvokeScript WP7 | 更新日期: 2023-09-27 18:29:12

我对wp7:上的方法InvokeScript有一些困难

webBrowser1.InvokeScript("eval", string.Format("document.getElementsByName('email').value='{0}'", _email));
webBrowser1.InvokeScript("eval", string.Format("document.getElementsByName('pass').value='{0}'", _pass));
webBrowser1.InvokeScript("eval", "document.forms[0].submit();");

不幸的是,当我尝试使用(document.forms[0].submit())提交信息时,会抛出一个异常,并显示消息:

出现未知错误。错误:80020101。

可能是什么问题?

WP7 InvokeScript error

首先确保IsScriptingEnabled为true,但我认为您做到了。

你的问题可能是你调用代码太早了。当Navigated事件发生时,DOM似乎还没有准备好进行操作。示例:

public partial class MainPage : PhoneApplicationPage
{
    public MainPage()
    {
        InitializeComponent();
        Wb.Navigated += new EventHandler<System.Windows.Navigation.NavigationEventArgs>(Wb_Navigated);
        MouseLeftButtonDown += new MouseButtonEventHandler(MainPage_MouseLeftButtonDown);
        Wb.NavigateToString("<html><body><form action='http://google.com/'></form></body></html>");
    }
    void Wb_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        Wb.InvokeScript("eval", "document.forms[0].submit();"); // Throws 80020101
    }
    private void MainPage_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        Wb.InvokeScript("eval", "document.forms[0].submit();"); // Works
    }
}

Script可以直接提交表单-我有一个依赖于该行为的应用程序。:)

问题是,当页面上没有脚本时(在某些情况下,当只有一个小脚本时——我无法隔离它),浏览器不会加载(或者可能加载和卸载)脚本引擎。当这种情况发生时,您根本无法执行任何脚本。

在一个特定的案例中,对我有用的一件事是制作HTML的本地副本,向其中添加随机脚本,并将其作为字符串加载到浏览器中,但这显然不适用于所有内容。

在另一种情况下,我的另一种选择(尽管还有更多的工作)是使用HtmlAgilityPack来阅读HTML并自己完成帖子。