Home >Backend Development >PHP Tutorial >javascript - 如何在html页面中修改所有外部链接形式?

javascript - 如何在html页面中修改所有外部链接形式?

WBOY
WBOYOriginal
2016-06-06 20:41:24982browse

例如,我有:http://A.com/a/index.html,该页面里有很多不同网站的外链(如b.com、c.com、d.com等)。
现在我想,用php、JS或其他方法实现,点击外链接“b.com”,新窗口打开的地址是“http://a.com/b/index.php?b.com”的效果。
谢谢,因不太懂代码,希望大大们赐教,如何统一替换所有的外链形式?

回复内容:

例如,我有:http://A.com/a/index.html,该页面里有很多不同网站的外链(如b.com、c.com、d.com等)。
现在我想,用php、JS或其他方法实现,点击外链接“b.com”,新窗口打开的地址是“http://a.com/b/index.php?b.com”的效果。
谢谢,因不太懂代码,希望大大们赐教,如何统一替换所有的外链形式?

捕捉 click 事件,然后在事件处理函数里修改 href

<code>$(document).on('click', 'a:not([data-bypass])', function(e) {
    var $target = $(e.target),
        href = $target.attr('href'),
        prefix = 'http://a.com/b/index.php?';

    if (/^http:\/\//.test(href)) {
        $target.attr('href', prefix + href);
    }

    // 把检查过的 <a> 标记一下,以后就不会再次做检查
    $target.attr('data-bypass', 'bypass');
});
</a></code>

这种思路跟直接遍历 <a></a> 修改 href 的思路比较,好处是绝无死角且效率高,对于后面再加入的 <a></a> 也依然有效。而且对于需要特殊处理的 <a></a>,只需要在标签里面先写上 data-bypass 属性就行,很方便。

jquery 获取全部 A 标签,然后批量替换 href 的值为 http:// 开头的

<code>$("a[href*='http://']").each(function() {
  $(this).attr('href','http://www.fsdeveloper.net'+'/'+$(this).attr('href'));
});
</code>

类似这种写法,

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn