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

时间:2012-08-25 06:54:08

标签: javascript

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

$.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 =“_ blank”,但是我已经要求年龄组中的一小组用户为我客户的网站,他们都更喜欢这种方法,而不是在新标签中打开。

另外,有没有办法可以添加到顶部,所以任何.PDF文件也会执行上述命令?它的设置只适用于外部网站,但你也可以为任何.pdf做例外吗?

非常感谢你们!

1 个答案:

答案 0 :(得分:1)

$('a:external').click(function(e){
    e.preventDefault();
    poptastic(this.href);
});

也就是说,点击任何外部链接会阻止默认点击行为(当然是导航到指定的网址,替换当前页面),而是调用您的poptastic()函数通过HREF。

(您可以将poptastic的正文直接放入.click处理程序中......)

编辑:要对PDF执行相同操作,如果您打算修改:external选择器以包含PDF - 我将“PDF”定义为href结尾".pdf" - 您可以这样做:

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

DEMO:http://jsfiddle.net/RevXG/4/