1

<a>タグのクリックをシミュレートする方法を探していました

ご存知のように、成功しません (唯一の回避策はwindow.open...)

しかし、私はネットでいくつかのコードの平和を見つけ、それをうまく動かすことができました:

http://jsbin.com/itujek/5/edit

Chrome
IE

問題はFFです。

コードをあなたと共有し、FF で動作するソリューションに向けて喜んで共有します。

このコードが FF で動作するためには、このコードで何をすればよいですか?

  <script>
        function doClick(event, myA)
        {
            if (myA.click)
            {
                myA.click()
            }
            else if (document.createEvent)
            {
                if (event.target !== myA)
                {
                    var tmpEvent = document.createEvent("MouseEvents");
                    tmpEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                    var allowDefault = myA.dispatchEvent(tmpEvent);
                }
            }
        }


      $(document).ready(function(){

            $(".myBtn").on('click',function (event) 
                           { doClick(event, $("#link")[0]);    });
      });



    </script>
</head>
<body>
    <a id="link" href="http://www.msdn.com">Normal link</a>
    <button type="button" class="myBtn"   >
        do click</button>
    <br />
    <br />
</body>
4

4 に答える 4

2

jquery.simulate.jsを使用してみてください:

$(elem).simulate(mouse_or_keyboard_event_type, options);

サポートされているイベントの種類:

  • マウス: マウスオーバー、マウスアウト、マウスダウン、マウスアップ、マウスムーブ、クリック、dblclick
  • キーボード: キーアップ、キーダウン、キープレス
于 2012-07-04T08:27:55.397 に答える
0

それ以外の

if (myA.click){
    myA.click();
}

できるよ

if (myA.click){
    window.location.href = myA.href;
}

もう1つのことは if (e.target !== myA) 、変数eが定義されていない行で、それはevent.

于 2012-07-04T08:35:39.690 に答える
0

ここのコードを見てください

if (myA.click)
{
   myA.click()
}

おそらくあなたのFirefox要素には.click属性があるので、実際にはリダイレクトを行わずに関数クリック(イベント)を呼び出すだけです。私の提案は、この部分を削除して、実際のクリックをシミュレートすることです. または、次を使用してリダイレクトをシミュレートすることもできますwindow.location.href = anchor.href

于 2012-07-04T08:31:00.717 に答える
0

このような場合は、「偽の」イベントを避けたいと思います。href を編集して、手動でリダイレクトしてみましたか? これを試して:

$(".myBtn").on('click', function(event) {
    doClick($("#link"));
});


function doClick($el) {
    var href = $el[0].href;
    if ($el.attr("target") != "_blank") {
        window.location.assign(href );
    }
    else {
        window.open(href, "newWindow");
    }
}

フィドルの例

于 2012-07-04T08:39:24.167 に答える