Есть ли способ сделать ссылку открыть новое окно браузера (не вкладка) без использования javascript?
Сделать ссылку открыть новое окно (не вкладка)
Ответ 1
С чистым HTML вы не можете на это влиять - каждый современный браузер (= пользователь) имеет полный контроль над этим поведением, потому что в прошлом им часто злоупотребляли...
Опция HTML
Вы можете открыть новое окно (HTML4) или новый контекст просмотра (HTML5). Контекст просмотра в современных браузерах - это в основном "новая вкладка", а не "новое окно". Вы не можете повлиять на это и не можете "заставить" современные браузеры открыть новое окно.
Для этого используйте атрибут элемента привязки target
[1]. Значение, которое вы ищете, - _blank
[2].
<a href="www.example.com/example.html" target="_blank">link text</a>
опция JavaScript
Формирование нового окна возможно с помощью javascript - см. превосходный ответ Ievgen ниже для решения javascript.
(!) Однако учтите, что открытие окон с помощью javascript (если это не сделано в событии onclick из элемента привязки) может блокироваться всплывающими окнами!
[1] Этот атрибут восходит к тем временам, когда в браузерах не было вкладок и использование фреймов было современным. Между тем, функциональность этого атрибута немного изменилась (см. Документ MDN)
.[2] Есть некоторые другие значения, которые больше не имеют большого смысла (потому что они были разработаны с учетом набора кадров), такие как _parent
, _self
или _top
.
Ответ 2
Это откроет новое окно, а не вкладку (с JavaScript, но довольно лаконично):
<a href="print.html"
onclick="window.open('print.html',
'newwindow',
'width=300,height=250');
return false;"
>Print</a>
Ответ 3
Я знаю, что его бит старый 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">
в новом окне
EDIT:
В-четвертых, я немного изменил исходный код, теперь он открывает новое окно, полностью соответствующее коэффициенту экрана пользователя (для пейзажных десктопов).
но я хотел бы рекомендовать вам использовать следующий код, который открывает ссылку на новой вкладке, если вы в мобильном телефоне (спасибо ответ zvona в другом вопросе)
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;
}
Ответ 4
Вы можете попробовать следующее: -
<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>
Ответ 5
Браузеры контролируют эту функцию, но
<a href="#" onclick="location.href='http://www.yahoo.com'; return false;" target="_blank">Go to Yahoo</a>
попытается открыть yahoo.com в новом окне.