建立一个链接打开一个新窗口(不是标签)

时间:2012-10-17 17:27:11

标签: html

有没有办法让链接在不使用javascript的情况下打开新的浏览器窗口(而非制表符)?

5 个答案:

答案 0 :(得分:222)

这将打开一个新窗口,而不是标签(使用JavaScript,但非常简洁):

<a href="print.html"  
    onclick="window.open('print.html', 
                         'newwindow', 
                         'width=300,height=250'); 
              return false;"
 >Print</a>

答案 1 :(得分:126)

使用纯HTML 你不能影响这一点 - 每个现代浏览器(=用户)都可以完全控制这种行为,因为它在过去被滥用了很多......

anchor元素具有属性target *。您要查找的值是_blank **。

<a href="www.example.com/example.html" target="_blank">link text</a>

它会打开一个新窗口(HTML4)或一个新的浏览上下文(HTML5)。但是,在现代浏览器中浏览上下文主要是“新选项卡”而不是“新窗口”。你没有影响,你不能“强迫”浏览器打开一个新窗口。

另一方面,可以通过javascript强制一个新窗口 - 请参阅下面的Ievgen答案的javascript解决方案。但是,请注意,通过javascript打开窗口(如果没有在锚点元素的onclick事件中完成)会被弹出窗口阻止程序阻止!

(*)此属性可追溯到浏览器没有标签的时间,并且使用框架集是最先进的。与此同时,此属性的功能略有变化(请参阅MDN Docu

(**)还有一些其他值没有多大意义(因为它们的设计考虑了框架集),如_parent_self_top

答案 2 :(得分:28)

我知道它有点旧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,我在原始代码中做了一些小改动现在它完全按照用户屏幕比例打开新窗口(对于风景桌面)

但是,如果您在 mobile (感谢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;
}

答案 3 :(得分:1)

你可以试试这个: -

   <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>

答案 4 :(得分:0)

浏览器控制了很多这个功能,但是

<a href="http://www.yahoo.com" target="_blank">Go to Yahoo</a>

将尝试在新窗口中打开yahoo.com。