技术小黑屋

每周一脚本:js设置链接为新标签打开

由于Markdown在编辑Octopress文章的链接时无法指定打开方式,所以很多时候需要使用html写。后来想了一下,为什么不通过javascript把超链接的打开方式默认成新标签实现呢。

JQuery中提供了一个DOM元素插入事件 DOMNodeInserted ,我们可以通过监听这个事件,对没有target属性值的a标签设置其target为_blank。这样就实现了默认新标签打开了。

脚本代码

lineos:false
1
2
3
4
5
6
7
8
9
10
/*To use the  DOMNodeInserted event listening, jquery is required*/
$(document).bind('DOMNodeInserted', function(event) {
  $('a[href^="http"]').each(
        function(){
          if (!$(this).attr('target')) {
              $(this).attr('target', '_blank')
          }
        }
    );
});

示例

lineos:false
1
2
3
4
5
6
7
<html>
    <script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
    <script type="text/javascript" src="https://rawgit.com/androidyue/weekly-scripts/master/javascript/target_blank_link.js"></script>
    <body>
          <a href="http://droidyue.com">droidyue</a>
    </body>
</html>

上述示例在浏览器加载之后,就会对a标签添加target=“_blank”属性。

每周一脚本@Github

其他


我的知乎 Live 推荐