Сделать ссылку открыть новое окно (не вкладка)

Есть ли способ сделать ссылку открыть новое окно браузера (не вкладка) без использования 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 в новом окне.