使用此代码,我可以选择所有外部链接并使其在新标签页中打开:
$.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做例外吗?
非常感谢你们!
答案 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(/^$/)
};