关于从root更改href值而不是单击

时间:2015-01-04 06:10:44

标签: javascript jquery

提前感谢帮助

尝试为外部链接创建重定向页面

在这里,我需要从根目录中更改href class="external"(重新创建它),而不是创建点击事件以打开具有自定义href的窗口

<a class="external" href="http://google.com">GOOGLE</a>

看到这个

$('a.external').click(function (e) { 
        e.preventDefault(); 
        var target = e.target || e.srcElement; 
        if ($(target).attr('target') == "_blank") { 
          window.open("http://"+redirectpage+"?url=" +$(target).attr('href') , "_blank"); 
        } else { 
            window.location = "http://"+redirectpage +"?url="+ $(target).attr('href')); 
        }
    })

如果您通过右键单击复制链接,则上面的示例 GOOGLE它会复制原始链接http:// google .com

但是 我想转换原始链接,当我点击打开此链接或当我复制结果=

http://example.com/redirect.html?url=http://google.com/

重定向页面我使用http:// example .com / redirect.html 包含这个

HTML

<a id="gotoexternal" href="">go to external</a>

JS

<script> 
    var query = window.location.search.substring(1); 
    query = query.replace("url=", ""); 
    $('#gotoexternal').attr('href', query);  
    </script>

3 个答案:

答案 0 :(得分:0)

您的window.location行中有一个额外的右括号。

应该是

window.location = "http://"+redirectpage +"?url="+ $(target).attr('href');

答案 1 :(得分:0)

$('a.external').each(function () { 
    $(this).attr( 'href', "http://"+redirectpage +"?url="+ $(this).attr('href') );
    $(this).removeAttr( 'target' ); //strip target _blank from links
});

这只是用重定向网址一次性替换url。它不需要onclick事件,也不需要搞乱目标或其他任何东西。除非有某种原因你想要保留你未提及的原始网址,否则这应该是实现你想要的最直接的方式。

答案 2 :(得分:0)

您可以使用attr(attributeName,function)修改现有的href

$('a.external').attr('href',function(_, oldHref) { 
    return  "http://" + redirectpage + "?url=" + oldHref;
});

target应该已根据您的代码设置

您也可以在点击处理程序中执行此操作,以便用户在悬停链接时无法看到更改

$('a.external').click(function (e) { 
      this.href = "http://" + redirectpage + "?url=" + this.href;
});

参考: attr(attributeName,function) Docs