2011-02-11 122 views
2

我在我的頁面中有錨標籤。我喜歡觸發點擊事件onload。這意味着我想用新標籤打開這個頁面「http://XXXXX.com」。因爲我不想彈出攔截器。無論如何要做到這一點?我可以觸發點擊事件onload

錨ATTRS給出波紋管

id="add_redirect" 
href="http://XXXXX.com" 
target="_blank" 
+3

請不要嘗試繞過彈出窗口阻止程序。 – BoltClock 2011-02-11 08:20:20

回答

2

如果你的目標是繞過頁面加載彈出窗口攔截器,觸發click事件綜合可能不會工作。瀏覽器足夠智能,可以知道何時click是用戶生成的,何時您調用了DOM元素上的click函數(在那些瀏覽器上甚至可以運行)。例如:http://jsbin.com/avibi3/3http://jsbin.com/avibi3/4

使用jQuery的trigger機制肯定不會做,因爲它並沒有真正觸發click事件在所有;它只是觸發jQuery的那迷上了處理程序(編輯:和,顯然,通過onclick屬性  —看到Sukhi的回答  —而不是那些通過addEventListener連接定義的)。如果這就是你想要做的,Sukhi的答案告訴你如何,雖然我總是說:如果你想讓代碼從兩個不同的地方運行,把它放在一個函數中,並從兩個不同的地方調用該函數(而不是把它在click處理程序中,然後模擬點擊來運行代碼)。 trigger(主要涉及與第三方腳本的集成有關)有效的使用案例,但是爲了在兩個不同的地方運行您自己的自己的代碼,這是一個設計問題的症狀。

2

嘗試添加下面的代碼在頁面加載

document.getElementById('add_redirect').click(); 
+0

對不起。這是所有Javascript – 2011-02-11 08:42:00

3

使用jQuery你可以做到這一點easily.well ...早些時候發佈的解決方案還努力。

$(document).ready(function(){ 
$("#add_redirect").trigger('click'); 
}); 

TRY DEMO

+0

請注意,只會觸發`click`處理程序**如果**處理程序與jQuery掛鉤。這很好,如果你使用jQuery,你想用它來連接事件處理程序,但是例如標記中的'onclick = ...'不會被激活。這值得大聲呼喊。 – 2011-02-11 08:21:10

+1

有趣,我的錯誤泛化。它不會做的是通過DOM2方法(`addEventListener`)附加的fire處理程序:http://jsbin.com/avibi3我錯誤地認爲它也不會觸發`onclick =「.. 「``從標記,但顯然它確實。無論如何,DOM2的事情是一個重要的警告。 Chrome的彈出窗口攔截器在任何情況下都不會被愚弄:http://jsbin.com/avibi3/3,http://jsbin.com/avibi3/4 – 2011-02-11 08:31:31

5

是的,你可以使用點擊事件的onLoad ...只是使用的setTimeout()jQuery的方法,將調用單擊功能,無需點擊那個...這裏是例子

$("document").ready(function() { 
    setTimeout(function() { 
     $("#add_redirect").trigger('click'); 
    },10); 

這會爲你網頁的時候工作負載和時間延遲是10ms,這是可以忽略的...