有沒有辦法讓一個鏈接打開一個新的瀏覽器窗口(不是選項卡),而不使用JavaScript?建立一個鏈接打開一個新窗口(不是選項卡)
回答
純HTML你不能影響這一點 - 所有現代瀏覽器(=用戶)擁有這種行爲完全控制,因爲它已經被濫用了很多過去......
anchor元素有一個屬性target
*。您正在尋找的價值是_blank
**。
<a href="www.example.com/example.html" target="_blank">link text</a>
它打開一個新窗口(HTML4)或一個新的瀏覽上下文(HTML5)。但是,現代瀏覽器中的瀏覽上下文大多是「新標籤」而不是「新窗口」。你沒有影響,你不能「強制」瀏覽器打開一個新的窗口。
另一方面,強制一個新的窗口是可能的通過JavaScript - 見JavaScript解決方案Ievgen的答案。但是,請注意,通過JavaScript打開窗口(如果未在來自錨元素的onclick事件中完成)可能會被彈出窗口攔截器阻止!
(*)該屬性的歷史可以追溯到瀏覽器沒有標籤並且使用框架集的最新技術。在此期間,該屬性的功能已略有改變(見MDN Docu)
(**)有這沒有太大的意義了(因爲它們是設計時考慮的框架集),如_parent
一些其他值,_self
或_top
。
瀏覽器控制這個功能很多,但
<a href="http://www.yahoo.com" target="_blank">Go to Yahoo</a>
將嘗試在新窗口中打開yahoo.com。
你可以試試這個: -
<a href="some.htm" target="_blank">Link Text</a>
,你也可以試試這個: -
<a href="some.htm" onclick="if(!event.ctrlKey&&!window.opera){alert('Hold the Ctrl Key');return false;}else{return true;}" target="_blank">Link Text</a>
這將打開一個新窗口,而不是標籤(用JavaScript,但相當簡潔地) :
<a href="print.html"
onclick="window.open('print.html',
'newwindow',
'width=300,height=250');
return false;"
>Print</a>
根據OP的「沒有javascript」的定義(這個答案使用JS,但沒有包含任何JS文件或
我知道它的老Q,但如果你通過搜索解決方案來到這裏,所以我通過jquery得到了一個很好的
jQuery('a[target^="_new"]').click(function() {
var width = window.innerWidth * 0.66 ;
// define the height in
var height = width * window.innerHeight/window.innerWidth ;
// Ratio the hight to the width as the user screen ratio
window.open(this.href , 'newwindow', 'width=' + width + ', height=' + height + ', top=' + ((window.innerHeight - height)/2) + ', left=' + ((window.innerWidth - width)/2));
});
它會在一個新窗口
編輯打開所有<a target="_new">
:
月1日,我在原來代碼中的一些小的變化,現在它打開新窗口完全是按用戶屏幕比例(對於風景桌面)
但是,我想推薦您使用以下代碼打開新標籤中的鏈接,如果您在手機(感謝zvona answer in other question):
jQuery('a[target^="_new"]').click(function() {
return openWindow(this.href);
}
function openWindow(url) {
if (window.innerWidth <= 640) {
// if width is smaller then 640px, create a temporary a elm that will open the link in new tab
var a = document.createElement('a');
a.setAttribute("href", url);
a.setAttribute("target", "_blank");
var dispatch = document.createEvent("HTMLEvents");
dispatch.initEvent("click", true, true);
a.dispatchEvent(dispatch);
}
else {
var width = window.innerWidth * 0.66 ;
// define the height in
var height = width * window.innerHeight/window.innerWidth ;
// Ratio the hight to the width as the user screen ratio
window.open(url , 'newwindow', 'width=' + width + ', height=' + height + ', top=' + ((window.innerHeight - height)/2) + ', left=' + ((window.innerWidth - width)/2));
}
return false;
}
'top = 300,left = 350'謝謝你的這一行! :) – sohaiby
OP請求「無javascript」,但jQuery基於javascript。 – Sablefoste
你說得對,但要麼沒有其他解決方案,這是更優雅。它反映了文檔的原始行爲。如果你不想要JavaScript解決方案?你可以像Christoph的答案那樣使用'_blank'。 – Cuzi
- 1. Firefox打開一個新選項卡而不是彈出窗口?
- 2. window.open打開一個新選項卡而不是一個新窗口(在Chrome中)
- 3. 鏈接到應用程序選項卡不打開一個新窗口
- 4. Markdown打開一個新窗口鏈接
- 5. 我想打開一個新的選項卡,而不是一個彈出窗口
- 6. 打開新選項卡而不是新窗口或同一選項卡
- 7. 鏈接在同一個窗口中打開(必須是一個新的窗口)
- 8. 使用h:commandButton或p:commandButton打開一個新窗口/選項卡?
- 9. JavaScript來在同一個選項卡中打開新窗口
- 10. 打開一個框不是新窗口
- 11. 如何在新選項卡(而不是新窗口)中打開鏈接?
- 12. 爲什麼窗口打開有時會打開一個新選項卡,有時會彈出一個窗口?
- 13. 如何在IE選項卡中打開一個URL而不是新窗口 - Java
- 14. 鏈接打開同一個窗口
- 15. 用鏈接打開一個子窗口?
- 16. 如何在新選項卡/窗口中打開超鏈接
- 17. 用戶response.redirect在新選項卡或窗口中打開鏈接
- 18. 在父窗口的新選項卡中打開Iframe鏈接
- 19. 在一個Internet Explorer窗口中打開多個選項卡
- 20. 如何在同一個窗口中打開2個不同的鏈接,並從一個鏈接打開另一個新窗口中的鏈接?
- 21. vb.net在新的IE11選項卡(而不是窗口)中打開鏈接
- 22. 打開一個新窗口
- 23. 打開一個新標籤頁而不是一個新窗口
- 24. 打開一個新選項卡不要創建新的ViewAccessScoped bean
- 25. 如何創建一個鏈接,用PHP打開一個新窗口?
- 26. LinkButton打開新窗口選項卡
- 27. 打開一個新窗口,點擊每個鏈接
- 28. Selenium WebDriver:打開新選項卡而不是新窗口
- 29. 在新選項卡中打開而不是新的_blank窗口
- 30. 在chrome中模擬一個href來打開一個新選項卡,而不是窗口。不使用onclick
似乎在2015年的Safari 9.0 –
@StefanHuska可以不工作,我想我解釋說,很清楚在我的答案是:*,希望爲正確的瀏覽器設置* - 如果您的瀏覽器被配置爲在新標籤頁中打開鏈接,但從html的角度來看,您無能爲力。這不是一年或瀏覽器的問題,現在大多數現代瀏覽器都在新標籤中打開。你需要像Ievgen這樣的javascript解決方案。 – Christoph
谷歌瀏覽器和火狐不工作(IE支持) –