jQuery 自动识别外部链接并设置新窗口打开

上次跟大家分享了 用 CSS 突出显示不同类型的链接,区分网站内链和外链 ,但方法中并没有提到如何自动让外链在新窗口打开。今天就跟大家分享下如何用强大的 jQuery 实现自动识别外部链接并设置新窗口打开。

其实此方法的灵感来自于 等待增强用户体验之文章内的链接 ,基本代码也差不多,只是做了一些的修改。在此先表示感谢,他的博客上也有很多关于 CSS 和 jQuery 的技巧,对技术感兴趣的可以多去逛逛,哈哈!

我先上代码再解释吧,也就两句话:

$("a[href*='http://www.xiaorsz.com'],a[href*='javascript'],a:has(img),a[href*=#]").attr("rel","inlinks");
$
("a[rel!='inlinks']").click(function(){window.open(this.href);return false;}).css({background:"url(out-link.gif) no-repeat right 50%","padding-right": "12px"});

解释下:第一句,用 jQuery 选择所有 a 链接中含有 “www.xiaorsz.com” . “javascript” . “#” 的链接,这是网站中所有的内链了,当然我不敢担保还有其它的情况。a:has(img) 是将图片链接也排除,因为我们并不想在图片链接的右侧也加个小图标。.attr(“rel”,”inlinks”) 是为所有已经选择的元素添加 rel=inlinks 的属性,标识一下。

第二句就是设置所有链接中 rel 属性不等于 inlinks 的(也就是外部链接了),在新窗口打开,并设置相应的 CSS 属性,也就是加一个外部链接的标识小图片。

OK,基本上就这么多了,当然这样的话是给博客中所有的外链都进行了设置,而我只想在内容区域的外部链接添加图标标识,因为我的侧边栏有很多的外部链接,如果我在右边加个小图片的话会比较夸张,也影响美观,对于留言区域也是一样。于是,我的代码是这样写的:

$("a[href*='http://www.xiaorsz.com'],a[href*='javascript'],a:has(img),a[href*=#]").attr("rel","inlinks");
$
("a[rel!='inlinks']").click(function(){window.open(this.href);return false;});
$
(".post .content p a[rel!='inlinks']").css({background:"url(out-link.gif) no-repeat right 50%","padding-right": "12px"});

这样我让所有的外链在新窗口打开,而只为 .content 中的 a 链接设置了 CSS 样式。

这样做还有一点点小问题存在,就是这个样式是在 JS 中设置的,也就是说我的 JS 加载完之后才会给链接加上对应的样式信息,这样如果网速不够快的话,就会出现一开始并没有右空白和图片标识,等一下后又突然出现,特别对于我这样在尾部加载 JS 的话有时就比较明显。解决办法是参考 用 CSS 突出显示不同类型的链接,区分网站内链和外链 ,用 CSS 对外部链接进行判断并实现相应的样式,而只用 jQuery 来设置新窗口打开的动作就可以了!!

OK!应该结束了吧,有问题可以留言,我会尽量解决的。当然有建议我也会虚心接收…… :grin:

Share with Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网

相关文章本月热门点击排行

  • N/A
Post a comment 2008/11/26 – 20:547,737 Views
Post a comment | Trackback URL | RSS Comments 54 Comments
  1. 2009/01/31 at 15:37 | #51

    这样是否可以实现自动为所有连添加Nofollow?
    这样添加的是否有效呢?

  2. 2009/01/31 at 15:41 | #52

    @猪小猪 这样添加是无效的!!蜘蛛是看不到的,呵呵!!那个得改html才可以!!

  3. 2009/07/23 at 11:35 | #53

    對於使用rel=”lightbox”的燈箱圖片就不能用了…並不完善。ˊˋ

  4. 2010/03/03 at 16:06 | #54

    呃。。请问这代码要加到哪里??

Comment pages 1 2
2 Trackbacks
  1. By test artical - 涅磐之畔 on 2008/11/28 at 14:23

    [...] http://www.xiaorsz.com/2008/11/jquery-different-types-of-link-new-windows/ Tags: test This entry was posted on Nov 28th, 2008 at 14:23 and is filed under IT数码. 注:此文(除注明转载)为本站博主lostindream原创,如要进行转载请 署名 注明出处 并遵守 Creative Commons 协议。 原文链接为 test artical [...]

  2. By 修改inove主题 on 2008/12/06 at 21:17

    [...] 外部链接识别并在新窗口打开 猛点这里查看.这个照着做没有什么问题. Rss弹出动画 新版的inove [...]

Post a Comment

(必填)

(必填,有回复时方便邮件通知)

(可不填,填了方便回访)

Sharing technology, recording life