我在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。
问题可能是什么?
答案 0 :(得分:3)
首先确保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
}
}
答案 1 :(得分:0)
脚本可以直接提交表单 - 我有一个依赖于该行为的应用程序。 :)
问题在于,当页面上没有脚本时(在某些情况下,当只有一个小脚本时 - 我无法隔离它),浏览器不会加载(或者可能加载和卸载)脚本引擎。当发生这种情况时,你根本无法执行任何脚本。
在特定情况下对我有用的一件事是制作HTML的本地副本,向其添加随机脚本,并在浏览器中将其作为字符串加载,但这显然不适用于所有内容。
在另一种情况下,另一种替代方案(虽然更多工作)是使用HtmlAgilityPack来阅读HTML并自己发布。