-1

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

$.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 文件进行例外处理吗?

非常感谢你们!

4

1 回答 1

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

也就是说,单击任何外部链接时都会阻止默认的单击行为(这当然是导航到指定的 url,替换当前页面),而是调用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(/^$/)
};

演示:http: //jsfiddle.net/RevXG/4/

于 2012-08-25T06:59:00.753 回答