0

我是来自 IOS 和 Android 的新手,并试图在那些应用程序中复制一个功能,我使用保存在首选项(隔离存储)中的用户名和密码并将其注入 https 网页的 javascript。从我之前问过的一个问题中,我现在了解到我不能使用 System.Windows.Forms ,因为它是用于 W8Desktop 的,我的目标是 windows phone 8。

在android中,我做了以下事情:

view.loadUrl(“javascript:document.getElementById(‘Login1_UserName’).value=’”+userName+”‘;javascript:document.getElementById(‘Login1_Password’).value = ‘”+password+”‘;”);
view.loadUrl(“javascript:document.getElementById(‘Login1_LoginButton’).click();”);

我正在尝试在 Visual Studio 2012 中执行此操作,但它不起作用。这是我的代码:

Browser.Navigate(new Uri(mainUrl, UriKind.Absolute));

Browser.InvokeScript(“eval”, new string[] { “document.getElementById(‘Login1_UserName’).value = ‘”+username+”‘ , document.getElementById(‘Login1_Password’).value = ‘”+password+”‘;”});
Browser.InvokeScript(“eval”, new string[] { “document.getElementById(‘Login1_LoginButton’).click();”});

但它只是行不通。所以我的问题有两个:

  1. 如果我想创建一个名为 eval 的小脚本,我是向我的项目中添加一个资源文件还是将其作为代码块添加到我的 mainpage.xaml.cs 中?如果有怎么办?
  2. 如果我按照上述方式进行操作,我的语法是否有问题?

非常感谢您可以提供帮助的任何指示。

4

1 回答 1

0

我现在有一个解决方案,但仍然需要知道如何实现它。

这是将javascript注入表单的正确代码。

 browser.InvokeScript("eval", "document.getElementById('Login1_UserName').value = '" + username + "';");
 browser.InvokeScript("eval", ("document.getElementById('Login1_Password').value = '" + password + "';"));
 browser.InvokeScript("eval", string.Format("document.getElementById('Login1_LoginButton').click();"));

我遇到的问题是我不允许页面在运行脚本之前完成加载。我已经尝试了一些东西,但没有任何效果,所以一旦我解决了它,我会继续挖掘和编辑。

希望这对其他人有帮助。

请记住,您不能像在某些解决方案中看到的那样使用 browser.document,因为它无法在 Windows 手机上运行。很高兴得到纠正,因为我是一个新手,但那条线索花费了我太多时间。您需要将 Invokescript 用于 windows phone 代码。

于 2013-12-09T02:27:56.067 回答