2012-01-10 3 views
6

リンク( 'a'タグ)があります。 私はJavaScriptを使用してそれをクリックしようとしています。中に.click(); 。それはクロムで失敗します。 (クロムには、オブジェクトにはclickメソッドがありません)。Chromeの「a」タグのクリックをシミュレートします

'onclick'をトリガーするか、 'href'にリダイレクトするとジョブは実行されません。

これを行う方法上の任意のアイデア? 私はこのためにライブラリ全体を取得しないことが好ましいです。

答えて

1
var event = document.createEvent("MouseEvents"); 
      event.initMouseEvent("click", true, true, window, 
       0, 0, 0, 0, 0, 
       false, false, false, false, 
       0, null); 
      element.dispatchEvent(event); 

は、私は、この使用dispatchEvent()

+0

それはIE専用です –

+0

@ Dr.Molle - 私の間違い、編集された答え。 – amal

1

私はあなたがライブラリを望んでいないが、この人のフットプリントはかなり小さいと理解していますが、これにはevent.simulateを使用できます。それはPrototypeJSのlibですが、私は移植がとても簡単だろうと確信しています。

$('my_anchor').simulate('click'); 

それは問題なくクロスブラウザで動作します:あなたが呼ぶようなプロトタイプにそれを使用する

+0

感謝を。 .. mootoolsの場合、.fireEvent( 'click')は正しいものです。 – joelhardi

-1

あなたはjQueryのを知っている場合は、単に無名関数を作成し、onclickのイベントをリッスン。 hrefのクラスまたはID、

などを指定する必要があります。 HTML:

<a href='' id='clickMe'>Click here</a> 

のjQuery:

$(function() { 
    $("#clickMe").click(function() { 
    ... the action you wish to perform ... 
    }) 
}) 

・ホープ、このことができます。 デイブ

+0

これはクリックイベントのみをリッスンし、opはクリックを「シミュレート」します。 – epoch

+0

有効なポイントは、私はより完全にopメッセージを読んでいたはずです! – detheridge02

2

で動作するはずです:ちょうどライブラリのメソッドを使用するには、リマインダー用

function dispatchEvent(el, e) 
{ 
    // console.log("dispatching"); 

    if ("createEvent" in document) 
    { 
     var evt = document.createEvent("HTMLEvents"); 
     evt.initEvent(e, false, true); 
     el.dispatchEvent(evt); 
    } 
    else 
    { 
     el.fireEvent("on" + e); 
    } 

} 

dispatchEvent(document.getElementById("mylink"), "click"); 
0

を使用する非IE-のブラウザではクロム

関連する問題