2011-09-01 68 views
0

好的,所以我搜索了所有沒有答案。 有人可以解釋爲什麼jQuery auto點擊一個鏈接

.trigger('click')

<a id="openNew" href="http://www.example.org">Click me</a> 

<script type='text/javascript'> 
    $(window).load(function(){ 
     $('#openNew').addClass("external").attr({ target: "_blank", href: 'http://www.google.com' }).trigger('click'); 
    }); 
</script> 

工作,它不與.click()

<script type='text/javascript'> 
    $(window).load(function(){ 
     $('#openNew').addClass("external").attr({ target: "_blank", href: 'http://www.google.com' }).click(); 
    }); 
</script> 

的工作不點擊任何我做鏈接。它只適用於我點擊它。我怎樣才能讓它自動點擊? 工作了大約1個小時,讓我發瘋,我知道我一定在做一些愚蠢的事情。

JsFiddle爲了您的方便。

我不介意普通JavaScript中的任何其他解決方案。

+0

這是一個重複的問題。你在問如何使用jquery點擊/觸發來模擬點擊錨點標記。 [這是你的答案以前的帖子。](http://stackoverflow.com/questions/4482074/how-to-use-jquery-trigger-anchors-default-click-event) – kasdega

+0

[JsFiddle](http:///jsfiddle.net/H2KuF/9/)顯示點擊甚至被觸發。 – kasdega

回答

1

模擬用戶物理地點擊鏈接是不可能的。既然你正在使用target ='_ blank',我認爲你想要一個新窗口?所以你需要使用window.open。哪些彈出式窗口攔截器不喜歡。

0

其實它的點擊,但沒有打開鏈接..看看這裏http://jsfiddle.net/H2KuF/5/

也許你需要從JS這個鏈接打開新的瀏覽器窗口。

這裏是樣品,我發現:

function open2(url, opt){ 
    if (opt == 0) // current window 
    window.location = url; 
    else if (opt == 1) // new window 
    window.open(url); 
    else if (opt == 2) // background window 
    {window.open(url); self.focus();} 
} 
+0

基本上這個答案是正確的。點擊事件正在觸發它只是沒有做你認爲應該做的事情。 – kasdega

1

使用elem[0].click();而不是elem.click();,因爲你要撥打的本地點擊功能,而不僅僅是觸發點擊事件。順便說一下:彈出窗口阻止程序會阻止它實際打開一個新窗口(幸運的是)。

0

卡爾斯威德伯格指出here(其中一個評論)

使用.trigger( '點擊')將不會觸發本地click事件。

做下面的工作:

<a id="openNew" href="http://www.example.org">Click me</a> 

<script type='text/javascript'> 
    $(window).load(function(){ 
     $('#openNew').addClass("external").attr({ target: "_blank", href: 'http://www.google.com' })[0].click(); 
    }); 
</script> 

演示here

+0

在Safari中不起作用 – chiccodoro