我尝试从android客户端应用程序填写webvIEw中的表单.我知道它应该如何工作,但getElementByID总是为我返回null.我在不同的网站上试过.
以下是www.Google.com的示例.
MyWebVIEw vIEw = new MyWebVIEw(this);vIEw.getSettings().setJavaScriptEnabled(true);vIEw.loadUrl("http://www.Google.com");vIEw.setWebVIEwClIEnt(new WebVIEwClIEnt() { @OverrIDe public boolean shouldOverrIDeUrlLoading(WebVIEw v, String url) { v.loadUrl(url); return true; } @OverrIDe public voID onPageFinished(WebVIEw v, String url) { v.loadUrl("JavaScript:document.getElementByID('mib').value = 'aaa';"); }});setContentVIEw(vIEw);
和MyWebVIEw类(仅供参考).
class MyWebVIEw extends WebVIEw { Context context; public MyWebVIEw(Context context) { super(context); this.context = context; } @OverrIDe public boolean ontouchEvent(MotionEvent event) { // do some multi touch stuff return true; }}
我总是得到错误:
09-01 04:35:26.453: I/chromium(2962): [INFO:CONSolE(1)] "Uncaught TypeError: Cannot set property 'value' of null", source: https://www.Google.de/?gws_rd=ssl (1)
但元素“mib”应该在网站上.使用桌面浏览器(带有移动模拟的Chrome)一切正常.我不知道,这里出了什么问题.
谢谢你的提示!
编辑:
我取得了一些进展.关于this站点,我还需要setDomStorageEnabled(true).
不,我可以找到DOM对象并设置值,但是我没有显示修改后的站点,而是获得了一个只有我设置的值的新空白.例如.一个白色的空白网站,文字“aaa”.
解决方法:
最后我找到了解决方案!这是一个非常奇怪的行为.
首先,您需要在webvIEw上指定setDomStorageEnabled(true).否则DOM不起作用.我想知道为什么没有教程给出一个暗示.但是没问题.
myvIEw.getSettings().setDomStorageEnabled(true);
在此之后,我结束了一个白色的空白页面,只有我设置的值.奇怪的是,JavaScript:document.getElementByID(‘myfIEld’).value =’aaa’;返回一个值.就是我设定的那个.因此创建了一个仅包含字符串“aaa”的新空白页面.
我通过修改JavaScript来抛弃返回结果来解决它:
JavaScript:var x = document.getElementByID('myfIEld').value = 'aaa';
瞧.这是工作.
总结以上是内存溢出为你收集整理的对于loadUrl上的javascript getElementById,Android WebView始终返回null全部内容,希望文章能够帮你解决对于loadUrl上的javascript getElementById,Android WebView始终返回null所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)