Android webview javascript函数不适用于锚标记

时间:2017-07-29 09:39:09

标签: javascript android webview

锚点标记点击事件在使用webview的android jellybean 4.2.2中不起作用,在上面的版本中它工作正常。

function sendGAMP(tid, url){                                              
 var data = {'v': '1',
             'tid': tid, // TrackingID Google Analytics
             'cid': Utilities.getUuid(), // ClientID / UserID --> Session.getTemporaryActiveUserKey()
             'z': Math.floor(Math.random()*10E7),
             't':'pageview',
             'dl': url };                                                 var payload = Object.keys(data).map(function(key) {
                                    return encodeURIComponent(key) + '=' + encodeURIComponent(data[key]);
                                }).join('&');                             
  var options = {'method' : 'POST',
                 'payload' : payload };UrlFetchApp.fetch('http://www.google-analytics.com/collect', options); 

这是我的锚标签,我无法改变它。

webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("javascript:(function(){document.getElementById('Accounts').click();})()");

得到解决方案: 如果没有使用android js接口实现click(),我们必须使用HTML DOM Event Object,如下所示:

<a href="Finacle;jsessionid=0000AT9YD5vrnOS9NJzIjdjJ4PD:1a33q40b7?bwayparam=j%2B2uf%2FBHaNA0ZGWt4ROCCTymgTzXQqv11%2Bfo1g9Jr8Zb1X2StMH26Jd%2FQ0EiE794ALKyEOjpbxhCm3IPgN61zCmWB5ZhKo2OiZRnAsRFLde2n56Kv4yz8ENMvTFzO6T8%0D%0AtXQFDgFsZMbGS28KN44DLVBb%2FQGDyNdvWhqaDSd5aqZEjDO0l1B%2F6x6RovcROwnJSFAG3awM%2FmbNHLvuSTcrwYeETC8B7UVmQBproSd7%2BC0%3D" 
id="Accounts" name="HREF_Accounts">Accounts</a>

参考:https://stackoverflow.com/a/22866913/5370550

1 个答案:

答案 0 :(得分:0)

这里的问题是EventBinding。当您在webView.loadUrl中调用该函数时,它在dom中找不到具有该id的元素且无法绑定。要防止出现此问题,您必须使用.on()功能。例如

$('#Accounts').on('click',function(){
//...
});

现在使用此方法,具有此id的任何元素都将与此事件绑定。