jQuery:使用 target="_blank" 转到 URL
Posted
技术标签:
【中文标题】jQuery:使用 target="_blank" 转到 URL【英文标题】:jQuery: go to URL with target="_blank" 【发布时间】:2011-10-04 03:32:00 【问题描述】:我正在使用这段 jQuery 代码来获取链接的 href:
var url = $(this).attr('href');
--还有这段代码去那个href:
window.location = url;
一切都是我想要的,除了新页面在与前一个相同的窗口中打开,我希望它在新窗口或标签中打开(在纯 html 中可以通过使用来实现target="_blank" 公式)。
问题:如何使用 jQuery 在新窗口或标签页中打开 href?
感谢您的帮助!
【问题讨论】:
【参考方案1】:你需要打开一个新窗口:
window.open(url);
https://developer.mozilla.org/en-US/docs/DOM/window.open
【讨论】:
谢谢。这正是我所需要的。另一个简单的问题:有没有办法告诉浏览器打开一个新标签而不是一个新窗口? 我相信这取决于浏览器的配置方式(即在选项卡或窗口中打开弹出窗口的设置)。【参考方案2】:使用,
var url = $(this).attr('href');
window.open(url, '_blank');
更新:href
最好使用 prop 检索,因为它将返回完整的 url,而且速度稍快。
var url = $(this).prop('href');
【讨论】:
【参考方案3】:问题:如何在新窗口或标签页中打开 href jQuery?
var url = $(this).attr('href').attr('target','_blank');
【讨论】:
【参考方案4】:.ready
函数用于在页面完成加载后插入属性。
$(document).ready(function()
$("class name or id a.your class name").attr("target" : "_blank")
)
【讨论】:
对未来读者的提醒:我使用的是jQuery("a").prop("target", "_blank");
,但没有将它包含在$document.ready
中,它在Chrome 中不起作用,但是一旦我将它包含在$document.ready()
调用中,它开始工作了。【参考方案5】:
检测是否使用了目标属性并包含“_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;
);
【讨论】:
【参考方案6】:如果你想通过 jQuery 创建弹出窗口,那么你需要使用插件。这个似乎会做你想做的事:
http://rip747.github.com/popupwindow/
或者,您始终可以使用 javascript 的 window.open 函数。
请注意,无论使用哪种方法,都必须打开新窗口以响应用户输入/操作(例如,单击链接或按钮)。否则浏览器的弹出窗口拦截器只会阻止弹出窗口。
【讨论】:
谢谢。不,不是弹出窗口。只是一个普通的窗口。通常我会让 html 完成这项工作,但是我在同一个菜单中使用的前一点代码会禁用所有链接的默认行为。【参考方案7】:尝试使用以下代码。
$(document).ready(function()
$("a[@href^='http']").attr('target','_blank');
);
【讨论】:
【参考方案8】: url='/controller/action';
window.open(location.origin+url,'_blank');
【讨论】:
以上是关于jQuery:使用 target="_blank" 转到 URL的主要内容,如果未能解决你的问题,请参考以下文章