2015-11-04 57 views
2

我想使用JavaScript一次打開新選項卡中給定網頁上的所有鏈接。讓我們以堆棧溢出問題列表爲例。這是我想出的:在新選項卡中打開給定頁面上的所有超鏈接

$(".question-hyperlink").each(function(){ 

$(this).attr({ 
      target: "_blank", 
      title: "Opens in a new window" 
     }); 
$(this).click(); 

}) 

不幸的是,這根本不起作用。我嘗試使用window.open來代替,但仍然沒有成功。我該怎麼做?

+1

執行後會發生什麼?你看到添加的屬性? – Justinas

回答

4

你的代碼不工作的原因是.click()沒有模擬用戶的點擊,它只是觸發綁定到click事件的所有事件處理程序。所以它只運行你放置的JS代碼,而不是瀏覽器對點擊的反應。

您可以使用window.open()這樣的:

$(".question-hyperlink").each(function(){ 
    window.open($(this).attr("href"), '_blank'); 
}); 

當心彈出窗口攔截器,但!如果你想處理它們,你可以做這樣的事情:

var x = window.open(...); 
if(x) { 
    //The window was opened. 
} 
else { 
    //It was blocked. 
} 
+0

謝謝先生。我其實是這樣做的,但在測試時忘記了檢查彈出窗口攔截器。這正是我所期待的! – dstronczak

1

不法垃圾郵件發送者會喜歡能夠使訪問者的瀏覽器打開大量的在同一時間在新窗口中的鏈接。他們樂於打開用戶不想看到的十幾個頁面,然後聲明點擊廣告費。

雖然瀏覽器的用戶不會那麼高興,所以大多數瀏覽器使您無法一次打開多個窗口。

你想要什麼都做不到。

+0

這取決於上下文。如果您需要在您可以控制瀏覽器設置的環境中使用此功能(例如對於Chrome JS JS擴展,或者您負責設置的公司Intranet上的JS應用程序),則可以執行此操作。但是,依靠它爲網絡上的所有用戶工作可能不是一個好主意。 – Anders

相關問題