【问题标题】:Trigger javascript from android app从 android 应用程序触发 javascript
【发布时间】:2013-03-27 05:29:42
【问题描述】:

我对 Android 开发还很陌生。我在应用程序中的一个按钮将用户发送到一个网页,用户可以在该网页上登录特定系统。

网页有用户名和密码的文本框。一旦您单击登录按钮(在网页中),它就会触发一个 javascript 登录到系统。 触发的代码是:onclick="updateAction('TourAccLogin');document.main_form.submit();

要登录的网页表单:

我的问题是: 我在应用程序中有用户名和密码,我想知道我是否可以以某种方式操纵此表单,自动登录而无需用户干预?意思是,我将填写用户名和密码,然后“单击”登录按钮。这样用户将立即被引导到系统,而无需输入用户名和密码。

【问题讨论】:

  • 你想要做的是合法/道德吗?
  • 当然,也是我自己的系统。我只是想为用户保存再次登录的步骤(因为用户已经使用相同的用户名和密码登录到应用程序)
  • 网页是否加载到 webview 中?

标签: java javascript android


【解决方案1】:

这项技术对我有用。在我的例子中,我正在加载一个名为 mElementId 的隐藏字段,其中包含存储在 someData 中的字符串值,然后触发其 onchange 事件,该事件不会自行触发。我包含它是为了展示如何在一次注入中堆叠 javascript 命令。我相信这个变体对你有用。

我还转义了任何单引号以防止出现 javascript 错误。您可能需要转义任何其他特殊字符,包括分号。就我而言,这没有必要,因为数据已经被清理过了。

// Copy data to element
mWebView.loadUrl("javascript:(function() { " +  
        "document.getElementById('" + mElementId + "').value = '" + 
        someData.replace("'", "\'") + "'; " +
        "document.getElementById('" + mElementId + "').onchange();" +
        "})()");

【讨论】:

    【解决方案2】:

    你说它是你的系统,所以你知道在后台运行什么来处理登录。我不是在嘲笑,只是在验证。我假设您已经创建了某种视图,在此之前您拥有用户名/密码。我对此提出质疑是因为您问是否有一种方法可以操作表单...

    话虽如此,请像往常一样将数据发送到处理登录的脚本。如果您使用的是 GET,那么 http://some.domain.com/somescript?username=mumble&password=foo。如果您使用的是 POST,则创建帖子参数并发送它。无论哪种方式,您都可以在 web 视图中处理结果,这将允许您现有的界面在应有的位置拾取。

    当然,如果您使用哈希作为密码或加盐密码,您需要在发送之前完成所有这些操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多