在Android Stock Browser中的链接上使用click()不起作用

时间:2013-06-05 09:18:37

标签: javascript javascript-events

我想触发点击JavaScript链接,但在Android Stock浏览器上运行时遇到问题。以下代码适用于Chrome(桌面,Mac)和Safari(iOS),但不适用于Android Stock浏览器(Samsung Galaxy S3):

<a href="test" id="a">One</a>
<a href="test" id="b">Two</a>

<script>
document.getElementById('a').addEventListener("click", function (e) {
    e.preventDefault();
    document.getElementById('b').click();
});

document.getElementById('b').addEventListener("click", function (e) {
    e.preventDefault();
    alert("test");
});
</script>

http://jsfiddle.net/xYfdF/7/

使用按钮替换链接时,它也开始在Android上运行:http://jsfiddle.net/xYfdF/8/

知道问题是什么或者如何实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

我找到了解决方案here。它纯粹的JS,而不是jquery,但可能有助于解决Android股票浏览器上缺少的click()

<a href="http://stackoverflow.com/" id="link">click here</a>

<script type="text/javascript">
    //same as: document.getElementById("link").click()
    var clickEvent = document.createEvent('MouseEvent');
    clickEvent.initEvent('click', true, true);
    document.getElementById("link").dispatchEvent(clickEvent);
</script>

答案 1 :(得分:1)

您需要将点击事件转换为使用Jquery触摸事件,如下所示

<script type="text/javascript">
    jQuery(document).ready(function() 
    {
       jQuery('#a').bind("touchstart touchend touchmove click",function(event) 
       {
    event.preventDefault();
         jQuery('#b').click();
       });

      jQuery('#b').bind("touchstart touchend touchmove click",function(event) 
       {
    event.preventDefault();
         alert('Test');
       });
    });
 </script>