Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript打开链接(仅限绝对URL)_Javascript_Jquery_Hyperlink - Fatal编程技术网

使用JavaScript打开链接(仅限绝对URL)

使用JavaScript打开链接(仅限绝对URL),javascript,jquery,hyperlink,Javascript,Jquery,Hyperlink,我希望在一个网站内的链接,以正常方式打开时,他们把你在网站内(导航,内部页面链接),但任何链接到一个外部来源,以打开一个新的窗口 在HTML中放置target=“\u blank”不再是一个选项,因为webkit浏览器忽略了这一点,所以我需要使用JavaScript 如何使用JS在新窗口中打开页面上的所有绝对URL,并保持所有相对URL不变?(这是我用来区分两者的方法。) 我想它将是以下内容的扩展版本: onclick="window.open(''); return false;" 但其余的

我希望在一个网站内的链接,以正常方式打开时,他们把你在网站内(导航,内部页面链接),但任何链接到一个外部来源,以打开一个新的窗口

在HTML中放置target=“\u blank”不再是一个选项,因为webkit浏览器忽略了这一点,所以我需要使用JavaScript

如何使用JS在新窗口中打开页面上的所有绝对URL,并保持所有相对URL不变?(这是我用来区分两者的方法。)

我想它将是以下内容的扩展版本:

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,但这不可能,不是吗?这是页面,这样你就可以了