0

JavaScript を使用してリンクのクリックをトリガーしたいのですが、Android ストック ブラウザーで機能させるのに問題があります。次のコードは、Chrome (デスクトップ、Mac) と Safari (iOS) では正常に機能しますが、Android ストック ブラウザー (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/

問題が何であるか、またはそれ以外の方法でこれを達成する方法はありますか?

4

2 に答える 2

2

ここで解決策を見つけました。jquery ではなく純粋な JS ですが、click()Android ストック ブラウザの不足を解決するのに役立つ場合があります。

<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>
于 2016-02-24T16:25:09.297 に答える
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>
于 2013-06-05T09:29:20.643 に答える