我在我的頁面中有錨標籤。我喜歡觸發點擊事件onload。這意味着我想用新標籤打開這個頁面「http://XXXXX.com」。因爲我不想彈出攔截器。無論如何要做到這一點?我可以觸發點擊事件onload
錨ATTRS給出波紋管
id="add_redirect"
href="http://XXXXX.com"
target="_blank"
我在我的頁面中有錨標籤。我喜歡觸發點擊事件onload。這意味着我想用新標籤打開這個頁面「http://XXXXX.com」。因爲我不想彈出攔截器。無論如何要做到這一點?我可以觸發點擊事件onload
錨ATTRS給出波紋管
id="add_redirect"
href="http://XXXXX.com"
target="_blank"
如果你的目標是繞過頁面加載彈出窗口攔截器,觸發click
事件綜合可能不會工作。瀏覽器足夠智能,可以知道何時click
是用戶生成的,何時您調用了DOM元素上的click
函數(在那些瀏覽器上甚至可以運行)。例如:http://jsbin.com/avibi3/3,http://jsbin.com/avibi3/4
使用jQuery的trigger
機制肯定不會做,因爲它並沒有真正觸發click
事件在所有;它只是觸發jQuery的那迷上了處理程序(編輯:和,顯然,通過onclick
屬性 —看到Sukhi的回答 —而不是那些通過addEventListener
連接定義的)。如果這就是你想要做的,Sukhi的答案告訴你如何,雖然我總是說:如果你想讓代碼從兩個不同的地方運行,把它放在一個函數中,並從兩個不同的地方調用該函數(而不是把它在click
處理程序中,然後模擬點擊來運行代碼)。 trigger
(主要涉及與第三方腳本的集成有關)有效的使用案例,但是爲了在兩個不同的地方運行您自己的自己的代碼,這是一個設計問題的症狀。
嘗試添加下面的代碼在頁面加載
document.getElementById('add_redirect').click();
對不起。這是所有Javascript – 2011-02-11 08:42:00
使用jQuery你可以做到這一點easily.well ...早些時候發佈的解決方案還努力。
$(document).ready(function(){
$("#add_redirect").trigger('click');
});
請注意,只會觸發`click`處理程序**如果**處理程序與jQuery掛鉤。這很好,如果你使用jQuery,你想用它來連接事件處理程序,但是例如標記中的'onclick = ...'不會被激活。這值得大聲呼喊。 – 2011-02-11 08:21:10
有趣,我的錯誤泛化。它不會做的是通過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
是的,你可以使用點擊事件的onLoad ...只是使用的setTimeout()jQuery的方法,將調用單擊功能,無需點擊那個...這裏是例子
$("document").ready(function() {
setTimeout(function() {
$("#add_redirect").trigger('click');
},10);
這會爲你網頁的時候工作負載和時間延遲是10ms,這是可以忽略的...
請不要嘗試繞過彈出窗口阻止程序。 – BoltClock 2011-02-11 08:20:20