在参考this SO question时,我正在尝试让我的网站正常工作,以便在新标签页中打开任何外部链接。
上述问题的每个答案的jQuery都有效(这意味着当我使用Chrome或Safari的检查器时,我会看到target="_blank"
被添加到外部链接,但点击链接本身并不会在新标签中打开或新窗口。
是否更改了现代浏览器,以便此功能不再有效?或者我错过了其他什么?
更新: Per @ hakam-fostok的请求,以下是相关代码:
JS:
$(function() {
$('a').attr('target', function() {
if(this.host == location.host) return '_self'
else return '_blank'
});
});
链接(如Chrome检查器中所示):
<a href="http://espn.com" target="_blank">ESPN</a>
更新2:我不确定这是否重要,但应用程序是Rails 4.2.7.1,运行jQuery 2.2.4。
答案 0 :(得分:1)
通常,如果要修改现有HTML元素的运行时属性,则必须使用prop
函数而不是attr
。请参阅文档here。
简单单词的不同之处在于prop
设置HTML元素的相应属性,而attr
仅设置 属性值。属性值将成为运行时属性的初始值。
$(function() {
$('a').prop('target', function() {
if(this.host == location.host) return '_self'
else return '_blank'
});
});