打开所有链接不是我的网站的一部分,在新的窗口与jquery
Open all links not part of my website in new window with jquery
我不知道我必须在'???,让它检查这个网站是不是我的地址。这是否也适用于google adsense广告(只是好奇,但不重要)?
我正在考虑使用像'not'这样的逻辑运算符。所以它会检查是否不是我的网站?那么??是我的网站吗?
$j(!a[href=???]).click(function(){
window.open(this.href, "target=_blank");
return false;
});
试试这个:
$j('a')
.not('[name^="http://your.domain.com/"]')
.attr('target', '_blank');
我以前的修复只适用于如果所有的url都是绝对的,这是一个糟糕的假设。试试这个:
$j('a[name^="http:"], a[name^="https:"]')
.not('[name^="http://your.domain.com/"]')
.attr('target', '_blank');
这个新版本跳过所有的相对url。如果你所有的站点内url都是相对的(即不以https?:
开头),你可以跳过对.not
的调用。
运行像$( 'a' )
这样的东西将通过每个A
元素循环-您只能在实际点击时担心它。此外,你可以运行相对url是你的网站,绝对url是别人的。
$( document ).on( 'click', 'a', function( event ){
var $a = $( this );
// test for anything like `http://` or '//whatever' or 'ftp://'
if ( /^'w+?':?'/'//.test( $a.attr( 'href' ) ) ){
// since this runs before the event is propagated,
// adding it now will still work
$a.prop( 'target', '_blank' );
}
});
演示:http://jsfiddle.net/danheberden/3bnk9/
或者你可以使用window.open:
$( document ).on( 'click', 'a', function( event ){
var href = $( this ).attr( 'href' );
// test for anything like `http://` or '//whatever' or 'ftp://'
if ( /^'w+?':?'/'//.test( href ) ){
// dont follow the link here
event.preventDefault();
// open the page
window.open( href, '_blank' );
}
});
演示:http://jsfiddle.net/danheberden/NcKdh/
您可以创建一个类来实现:
// Outbound Links
var outLinks = function() { $('a[@class*=out]').click( function(){ this.target = '_blank'; } ); }
$(document).ready(outLinks);
然后你所需要做的就是添加"out"类到任何链接,它将打开一个新窗口。
或任何以http://
开头的链接$('a[href^="http://"]').prop("target", "_blank");
如何:
$j('a').live('click', function(){
if(this.href.indexOf('yourwebsite.com') == -1) {
window.open(this.href, "target=_blank");
return false;
}
});
这也可以通过一个正则表达式来改进,这样它就不会捕获像http://someothersite.com/yourwebsite.com/这样的url,但这是一个边缘情况。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 防止Iframe窗体在新窗口中打开
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调整窗口大小时,可拖动的对象会出现在容器外部
- Javascript排序的图像弹出窗口..可以't单独弹出
- 窗口大小html css
- 弹出窗口出现,然后退出
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- 新窗口中网页的一部分
- 是 setTimeout 是 javascript 窗口对象的一部分
- Chrome插件-从窗口的一部分生成PNG/JPG
- 同构反应-如何使反应作为窗口对象的一部分发挥作用
- jqueryui模式窗口,只让其中一部分像新的Facebook照片标签窗口一样滚动
- 使用jquery更改SRC名称的一部分,当窗口大小调整时,会重复
- 打开所有链接不是我的网站的一部分,在新的窗口与jquery
- 如何阻止用户点击任何其他按钮,而页面刷新(从模态窗口解决方案的一部分)
- 弹出窗口浏览器仍然是Windows主页的一部分
- 如何更换一部分窗口.位置与随机生成的数字
- 当子窗口关闭时刷新父窗口的一部分