jQuery:如何在新标签页中打开链接?

70

我使用这段jQuery代码来获取链接的href:

var url = $(this).attr('href');

--还有这段代码可以跳转到该href:

window.location = url;

除了新页面在与之前的页面相同的窗口中打开,而我希望它在新窗口或选项卡中打开(在普通 html 中使用 target="_blank" 公式可以实现此目的),其他都符合我的要求。

问题:如何使用 jQuery 在新窗口或选项卡中打开 href?

谢谢您的帮助!

8个回答

94

谢谢。这正是我需要的。另一个快速问题:有没有办法告诉浏览器打开一个新标签页而不是一个新窗口? - Dimitri Vorontzov
1
我相信这取决于浏览器的配置(即在选项中设置弹出窗口在标签页或窗口中打开)。 - Christopher Armstrong

75

使用,

var url = $(this).attr('href');
window.open(url, '_blank');

更新: 最好使用prop获取href,因为它将返回完整的URL并且速度稍快。

var url = $(this).prop('href');

10

问题:如何使用jQuery在新窗口或标签中打开href?

var url = $(this).attr('href').attr('target','_blank');

4
检测目标属性是否被使用并包含“_blank”。对于不支持“_blank”的移动设备,这是一个可靠的替代方案。
    $('.someSelector').bind('touchend click', function() {

        var url = $('a', this).prop('href');
        var target = $('a', this).prop('target');

        if(url) {
            // # open in new window if "_blank" used
            if(target == '_blank') { 
                window.open(url, target);
            } else {
                window.location = url;
            }
        }           
    });

4
.ready 函数用于在页面加载完成后插入属性。
$(document).ready(function() {
     $("class name or id a.your class name").attr({"target" : "_blank"})
})

2
提醒未来的读者:我在使用jQuery("a").prop("target", "_blank");时没有将其包含在$document.ready()中,这在Chrome中无法正常工作,但是一旦我将其包含在$document.ready()调用中,它就开始正常工作了。 - Nathan Wailes

1
如果你想通过jQuery创建弹出窗口,那么你需要使用一个插件。这个插件似乎可以满足你的需求:

http://rip747.github.com/popupwindow/

或者,您可以始终使用JavaScript的window.open函数。

请注意,无论哪种方法,新窗口都必须是响应用户输入/操作而打开的(例如,单击链接或按钮)。否则,浏览器的弹出窗口拦截程序将会阻止弹出窗口。


不,不是弹出窗口,只是一个普通的窗口。通常我会让HTML完成这项工作,但我在同一菜单中使用的先前代码禁用了所有链接的默认行为。谢谢。 - Dimitri Vorontzov

0

尝试使用以下代码。

$(document).ready(function(){
    $("a[@href^='http']").attr('target','_blank');
});

0
 url='/controller/action';  
 window.open(location.origin+url,'_blank');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接