Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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 如何在自定义大小的弹出窗口中打开所有外部链接?_Javascript - Fatal编程技术网

Javascript 如何在自定义大小的弹出窗口中打开所有外部链接?

Javascript 如何在自定义大小的弹出窗口中打开所有外部链接?,javascript,Javascript,使用此代码,我可以选择所有外部链接并使其在新选项卡中打开: $.expr[':'].external = function(obj){ return !obj.href.match(/^mailto\:/) && (obj.hostname != location.hostname) && !obj.href.match(/^javascript\:/) && !obj.hr

使用此代码,我可以选择所有外部链接并使其在新选项卡中打开:

$.expr[':'].external = function(obj){
    return !obj.href.match(/^mailto\:/)
           && (obj.hostname != location.hostname)
           && !obj.href.match(/^javascript\:/)
           && !obj.href.match(/^$/)
};

$('a:external').attr('target', '_blank');
有什么办法可以修改吗

所以它有这个功能:

 var newwindow; function poptastic(url){
  newwindow=window.open(url,'name', 'height=800,width=1020,scrollbars=yes');
    if (window.focus) {newwindow.focus()}}
最终,我希望它只执行底部功能,但对所有外部链接,而不必进入并将其添加到每个外部链接:

 <a href="javascript:poptastic('http://www.external-link.com')">External Link</a>
我知道有些人不喜欢这样,要求用户打开一个新窗口,而不是只打开target=\u blank,但我已经向一小群年龄组的用户询问了我的客户站点,他们都非常喜欢这种方法,而不是在新选项卡中打开

另外,是否有一种方法可以添加到顶部,以便任何.PDF文件也可以执行上述命令?它的设置使其仅适用于外部网站,但您是否也可以对任何.pdf文件例外

非常感谢各位

$('a:external').click(function(e){
    e.preventDefault();
    poptastic(this.href);
});
也就是说,单击任何外部链接都会阻止默认的单击行为,这当然是导航到指定的url,替换当前页面,并通过href调用您的poptastic函数

您可以直接将poptastic的主体放入。单击处理程序

编辑:要对PDF执行相同的操作,如果您打算修改:外部选择器以包含PDF(我将PDF定义为以.PDF结尾的href),则可以执行以下操作:

$.expr[':'].external = function(obj){
    return !obj.href.match(/^mailto\:/)
           && (obj.hostname != location.hostname || /.pdf$/.test(obj.href))
           && !obj.href.match(/^javascript\:/)
           && !obj.href.match(/^$/)
};

演示:

Hmm。。我试过了,但是现在点击链接什么都做不了?这是因为我的poptastic设置方式吗?此外,如果苹果电脑等一些平台无视此功能,只是在一个新选项卡中打开,做着与target=\u blank相同的事情,那么会不会对防止默认的点击行为产生负面影响,该链接甚至会在这样做的平台上不起作用?或者target=_blank实际上也阻止了默认的点击行为吗?编辑:另外,关闭您所说的会破坏外部链接的功能,并且不再允许该功能工作。好的,我直接从我的答案和您的问题中的poptastic函数复制了代码并粘贴到中,它工作正常。关于你关于苹果电脑的问题,为什么你认为他们忽略了preventDefault?我在这里尝试时,target=\u blank没有覆盖JS:仅适用于外部和PDF链接。我的点击处理程序仍然有效,并在一个新窗口中打开了链接,但当我摆脱JS后,链接在一个新选项卡中打开。请注意,用户仍然可以点击鼠标中键打开一个新标签,这将绕过JS,但是如果他们点击鼠标中键,他们已经选择了获取一个新标签,所以我不必担心。在我看来,所有人显然都会将自己的适当url放在那里,然后$privacy。点击。。。使用与我的回答中相同的单击处理程序调用函数打开新窗口。。。