【问题标题】:Input programmatically text in fields in webview after load page加载页面后以编程方式在 webview 的字段中输入文本
【发布时间】:2017-02-20 14:48:51
【问题描述】:

我有一些关于 WebView 的问题。 我有一些页面。此页面有两个输入字段。

我们可以在页面加载时在字段中输入一些文本。但是,我可以在加载后设置这个字段吗? 例如,页面打开,我在工具栏菜单中选择了一些文本。在此文本粘贴到 webView 字段之后。 真的要领悟吗?谢谢。

【问题讨论】:

    标签: javascript android webview


    【解决方案1】:

    首先让我们分解问题。

    • webview 只会像浏览器一样加载一些 HTML。如果您想以编程方式将文本插入网页中的输入元素,那么我们需要使用 javascript。

    • 对于 Android,webview 是一个处理自己的绘图的视图,我们可以与它的方法进行交互,这就是一般水平。

    但是,如果我们希望在 Android 范围内执行某些操作,从而触发一些 javascript 在网页内发生,那么这两者会相遇。

    我们仍然必须遵守我们在解决问题时描述的所有规则。那么让我们用这些术语来讨论它:我们需要以这样一种方式与 webview 的方法交互,它会使用 javascript 将文本插入到输入元素中。

    所以,现在我们知道我们需要什么了:

    • JavaScript 将文本插入到输入元素中
    • 使用我们的 JavaScript 的 WebView 方法

    JavaScript 很简单。这样的事情就可以解决问题。

    document.findElementById('my_text').value = 'My Text';
    
    <input type='text' id='my_text' />
    

    谢天谢地,我们可以使用这样的 WebView 方法。它相当冗长但非常直接,您可以阅读所有相关内容here

    希望这会有所帮助。

    【讨论】:

    • 我对此有疑问。设置用户名和密码的输入值后,我点击登录按钮,但没有任何反应。我需要手动单击用户名字段并手动删除和重写一个字母,然后单击登录按钮。我认为某些事件还需要以编程方式触发,以确保 webview 知道已设置输入值。你能帮我解决这个问题吗?
    • 我只是改变输入值,我需要改变状态值。
    【解决方案2】:

    @DanielLaneDC 的反馈对我帮助很大,只是需要更多信息才能让它在我身边发挥作用。希望它可以帮助下一个人。

    如果您的网站有这样的输入字段:

    <input type="password" id="activeInput" autoaccept="true" value="">
    

    我向我的网络服务器添加了一个 javascript 函数:

    function getFromAndroid(str){
        document.getElementById('activeInput').value = str;
    }
    

    在Android webview中我调用了javascript函数:

    webView.loadUrl("javascript:getFromAndroid('"+yourtext+"')");
    

    如果您还没有确保添加:

    webSettings.setJavaScriptEnabled(true);
    

    【讨论】:

      猜你喜欢
      • 2015-03-08
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 2014-05-10
      • 1970-01-01
      • 2014-04-08
      相关资源
      最近更新 更多