2012-01-10 109 views
6

我有一個鏈接('a'標籤)。 我正在嘗試使用javascript單擊它。 雖然.click();在FF en IE中表現不錯,但在Chrome中失敗。 (鉻表示該對象沒有點擊方法)。模擬點擊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); 

應鉻

+0

它不是,它是IE-只 – 2012-01-10 10:39:41

+0

@ Dr.Molle - 我的錯誤,編輯答案。 – amal 2012-01-10 10:47:19

1

我明白你不想要一個圖書館,但這個人的足跡很小,你可以使用event.simulate這個。它是一個PrototypeJS庫,但我相信移植將非常簡單。

要使用它的原型,你會打電話:

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

它可以跨瀏覽器沒有問題。

+0

感謝您的提醒,只需使用該庫的方法。 ..在mootools的情況下,.fireEvent('click')是正確的。 – joelhardi 2012-02-29 18:44:02

-1

如果你知道的jQuery只需創建一個匿名函數,並聽取了onclick事件。你將需要爲你指定一個類或id href,

例如 HTML:

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

的jQuery:

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

希望這有助於。 戴夫

+0

這隻會偵聽點擊事件,操作者想要'模擬'點擊。 – epoch 2012-01-10 10:25:28

+0

有效的點,我應該更仔細閱讀操作消息! – detheridge02 2012-01-10 10:34:52

0

我用這個:

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");