使用JavaScript打开链接(仅限绝对URL)
我希望在一个网站内的链接,以正常方式打开时,他们把你在网站内(导航,内部页面链接),但任何链接到一个外部来源,以打开一个新的窗口 在HTML中放置target=“\u blank”不再是一个选项,因为webkit浏览器忽略了这一点,所以我需要使用JavaScript 如何使用JS在新窗口中打开页面上的所有绝对URL,并保持所有相对URL不变?(这是我用来区分两者的方法。) 我想它将是以下内容的扩展版本:使用JavaScript打开链接(仅限绝对URL),javascript,jquery,hyperlink,Javascript,Jquery,Hyperlink,我希望在一个网站内的链接,以正常方式打开时,他们把你在网站内(导航,内部页面链接),但任何链接到一个外部来源,以打开一个新的窗口 在HTML中放置target=“\u blank”不再是一个选项,因为webkit浏览器忽略了这一点,所以我需要使用JavaScript 如何使用JS在新窗口中打开页面上的所有绝对URL,并保持所有相对URL不变?(这是我用来区分两者的方法。) 我想它将是以下内容的扩展版本: onclick="window.open(''); return false;" 但其余的
onclick="window.open(''); return false;"
但其余的我都无法理解
我宁愿避免使用类或id(事实上,由于CMS限制,id是不可能的),因为我更愿意将标记尽可能地最小化和语义化。类似于:
var domain = "http://example.com";
$("a").onclick(function () {
if (this.href.indexOf(domain) !== 0) {
window.open(this.href);
return false;
}
return true;
});
它会将onclick处理程序附加到页面上的所有
。如果链接看起来像指向外部站点:打开一个新窗口并取消默认的点击事件(返回false
),如果不是,则继续(返回true
)类似于:
var domain = "http://example.com";
$("a").onclick(function () {
if (this.href.indexOf(domain) !== 0) {
window.open(this.href);
return false;
}
return true;
});
它会将onclick处理程序附加到页面上的所有
。如果链接看起来像指向外部站点:打开一个新窗口并取消默认的单击事件(返回false
),如果不是,则继续(返回true
)选择器过滤外部链接。单击将打开一个新窗口
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<!-- Here is your site content -->
<script>
$(document).ready(function() {
$('a[href^="http://"]').on('click', function(e) {
e.preventDefault();
window.open($(this).attr('href'), '_new');
});
});
</script>
</body>
</html>
选择器过滤外部链接。单击将打开一个新窗口
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<!-- Here is your site content -->
<script>
$(document).ready(function() {
$('a[href^="http://"]').on('click', function(e) {
e.preventDefault();
window.open($(this).attr('href'), '_new');
});
});
</script>
</body>
</html>
谢谢你的帮助。我很难让它工作。是否需要将其包装在$(document.ready(function(){})中;还是类似的?我已经把它放在这一页的开头,以防你更容易看到代码。是的。代码将在页面顶部及时运行,您还没有
,将其包装在$(文档)中。ready
将推迟执行,直到加载所有内容。如果在$(document).ready
事件之后加载了更多内容,则需要再次应用此函数。抱歉,您丢失了我…!目前脚本在我的页面上不起作用。这是我在$(document).ready(function(){var domain=”中放入的内容http://tempertemper.net“;$(“a”).onclick(函数(){if(this.href.indexOf(domain)!==0){window.open(this.href);返回false;}返回true;});})代码>谢谢你的帮助。我很难让它工作。是否需要将其包装在$(document.ready(function(){})中;还是类似的?我已经把它放在这一页的开头,以防你更容易看到代码。是的。代码将在页面顶部及时运行,您还没有
,将其包装在$(文档)中。ready
将推迟执行,直到加载所有内容。如果在$(document).ready
事件之后加载了更多内容,则需要再次应用此函数。抱歉,您丢失了我…!目前脚本在我的页面上不起作用。这是我在$(document).ready(function(){var domain=”中放入的内容http://tempertemper.net“;$(“a”).onclick(函数(){if(this.href.indexOf(domain)!==0){window.open(this.href);返回false;}返回true;});})代码>不要强制链接在新窗口中打开,而是由用户决定。由于现代浏览器默认会阻止弹出窗口,因此window.open()
会有更多问题。我希望我可以。我通常是这样做的,但我客户的客户(不要问!)很坚决。我已经解释了为什么target=“\u blank”不是很好,并且对它的支持已经取消。弹出的东西也很有意义。谢谢浏览器有没有办法不将其视为弹出窗口?也许是另一个命令?我不知道。这是web开发的一部分,受客户端浏览器功能的限制。如果可能的话,我建议解释一下为什么浏览器不能方便地显示弹出窗口(也就是说,用户讨厌它们),并且不实现它。弹出窗口问题会增加我的论点的分量。感谢您的轻推:)与其强制链接在新窗口中打开,不如由用户决定。由于现代浏览器默认会阻止弹出窗口,因此window.open()
会有更多问题。我希望我可以。我通常是这样做的,但我客户的客户(不要问!)很坚决。我已经解释了为什么target=“\u blank”不是很好,并且对它的支持已经取消。弹出的东西也很有意义。谢谢浏览器有没有办法不将其视为弹出窗口?也许是另一个命令?我不知道。这是web开发的一部分,受客户端浏览器功能的限制。如果可能的话,我建议解释一下为什么浏览器不能方便地显示弹出窗口(也就是说,用户讨厌它们),并且不实现它。弹出窗口问题会增加我的论点的分量。谢谢你的轻推:)谢谢大流士。我该如何在我的页面上工作?就在头上的一些标签里?我编辑了我的第一条评论。这是使用jQuery的基本形式。我已经这样做了,它不需要。我正在使用jQuery1.6.2,但这不可能,不是吗?这是页面,你可以看看我的资料来源:好吧,这就是问题所在。jQuery 1.6.2不支持“on”方法。因此,您必须键入:$('a[href^=“http:/”)。单击(函数(事件){…我希望jQuery 1.6.2支持这种选择器。测试它。感谢Darius-我更新了jQuery,它很喜欢它!如果它是一个内部链接(相对URL或绝对URL以同一网站地址开头)它不会在新窗口中打开链接。如果是外部链接,它会打开!太棒了!感谢您的帮助:)谢谢Darius。我该如何在我的页面上使用它呢?就在标题中的一些标记内?我编辑了我的第一条评论。这是使用jQuery的基本形式。我已经这样做了,但它不需要。我正在使用jQuery 1.6.2,但这不可能,不是吗?这是页面,这样你就可以了