【问题标题】:Android Webview - Change Input TextAndroid Webview - 更改输入文本
【发布时间】:2014-05-23 14:44:10
【问题描述】:

我已经正确设置了我的 webview,并在 onPageFinished 方法中执行了我的 Javascript。

问题在于,每当我尝试更改输入值时,无论我做什么,最终都会将整个 webview 替换为我尝试替换的输入值。

view.loadUrl("javascript:document.forms[0].elements['password'].value = 'test';");

有什么想法吗?

PS。这段代码在同一个地方完美运行。

view.loadUrl("javascript:checkForm()");

这将执行检查并提交表单。运行后弹出“请输入值”。

我也试过document.getElementsByName("password")[0].value = 'test';同样的结果。

已解决:是模拟器导致了问题。我直接在我的手机上测试,打开USB调试,效果很好。

【问题讨论】:

    标签: java android input webview


    【解决方案1】:

    您的第一行代码使用 id 或 name 属性为我工作:

    view.loadUrl("javascript:document.forms[0].elements['password'].value = 'test';");
    

    第二行,适用于 getElementById 但不适用于 getElementByName:

    view.loadUrl("javascript:document.getElementByName('password').value = 'test';");
    

    所以,这不是问题。也许如果你发布其余的代码。

    【讨论】:

    • 对不起,应该是 document.getElementsByName('password')[0].value
    • 可能是我的模拟器。我会在我的手机上用 USB 测试它。
    • 是的。它可以在我的手机上运行,​​所以是模拟器造成了麻烦。谢谢。
    【解决方案2】:

    你试图改变视图,所以你需要使用:

    .dispatchEvent(new Event('input')) ",null).

    试试这个:

    view.evaluateJavascript("javascript:  " +
        "var password= document.getElementById('password'); " +
        "password.value = 'test'; " +
        "password.dispatchEvent(new Event('input')) ",null);
    

    【讨论】:

      猜你喜欢
      • 2011-09-22
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 2011-06-26
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多