WP7 InvokeScript错误

我对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。

问题可能是什么?

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

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

 public partial class MainPage : PhoneApplicationPage { public MainPage() { InitializeComponent(); Wb.Navigated += new EventHandler(Wb_Navigated); MouseLeftButtonDown += new MouseButtonEventHandler(MainPage_MouseLeftButtonDown); Wb.NavigateToString("
"); } 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 } }

脚本可以直接提交表单 – 我有一个依赖于该行为的应用程序。 🙂

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

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

在另一种情况下,另一种替代方法(虽然更多工作)是使用HtmlAgilityPack读取HTML并自己发布。