超链接伪装成不需要的亲戚

时间:2012-01-04 06:06:23

标签: jquery hyperlink express

我有一个奇怪的错误而且我很难过。

在我的网页上我有

<a href="www.purple.com">Purple</a>

但点击时表现为

<a href="http://mydomain.com/www.purple.com">Purple</a>

但是,当我查看源代码时它应该是这样。使用markdown语法在聊天应用程序中动态添加链接。因此,将http://添加到所有内容并不是一个简单的解决方案。还有其他方法可以解决这个问题吗?

修改

我已经能够使用javascript replace()在每个链接的开头添加http://来解决它,但我仍然想知道是否有更简单,更优雅的解决方案。

msg = msg.replace(/href="/ig, 'href="http://').replace(/http:\/\/http:\/\//ig, 'http://')

2 个答案:

答案 0 :(得分:2)

如果您没有为您的外部链接添加http://,它们将被视为来自您网域的链接 - 相对于调用文档所在的路径或基本href中指定的路径。< / p>

答案 1 :(得分:0)

假设您无法编辑或解决降价语法(即......显然首先生成字符串),您可以使用jQuery为修复程序添加创可贴。再次,这不是真的首选...

$("a[href*='http://mydomain.com/www']").each(function(i, el){
    //this will iterate through all links with an href
    //value that contains the above string 'http://mydomain.com/www'

    var old_url = $(el).attr('href');
    var new_url = old_url.split('http://mydomain.com/')[1]; //split up the url, and correct the mistake

    $(el).attr('href', new_url);//re-apply the href attribute to the element
});