2011-08-08 59 views
3

我注意到當做setTimeout打開一個新窗口以響應單擊

$(".sitelink_external").click(function(e){ 
    e.preventDefault(); 
    window.open(redirectUrl,'_blank') 
}); 

時,它打開一個新的選項卡或窗口,沒有調用chrome,firefox或IE的彈出窗口阻止程序。

但是,我想創建一個重定向,以便用戶能夠後悔,爲鏈接製作計時器,如果我喜歡這樣:

$(".sitelink_external").click(function(e){ 
    e.preventDefault(); 
    setTimeout("window.open(redirectUrl,'_blank')", timer * 1000); 
}); 

它調用彈出窗口阻止程序,不按我想要的方式打開彈出窗口,任何想法如何解決這個問題?

編輯:答案很好,但不解決問題,因爲它以前也是以同樣的方式工作。

+4

啊,我懷疑你打的政策規則說,在事件處理程序中的彈出式打開是好的 - 這是用戶觸發的,但一個來自異步計時器事件不是。 – Alnitak

回答

0

更改setTimeout調用做到這一點,而不是:

setTimeout(function() { window.open(redirectUrl,'_blank') }, timer * 1000); 

你不能傳遞一個變量,你在做它的方式(和通常是更好地傳遞一個函數,而不是一個字符串,將eval'd)