不需要的超链接Internet Explorer前缀[Javascript]

时间:2009-07-27 16:04:17

标签: javascript internet-explorer

问题是什么?

仅在Internet Explorer(惊喜)中我的代码执行不正确。下面的简短代码应该为每个“a”标记添加“onclick”操作。这非常有效,但是看第五行,它应该将第二个函数参数设置为锚标记的“href”属性的值。在WebKit,Mozilla等中它很好。如果我们将“href”设置为“lorem_ipsum”,那么WebKit,Mozilla等检索正确的结果并将第二个函数参数设置为“lorem_ipsum”,Internet Explorer前缀为“http://www.some.site/”,因此我们看到“{{3} }“报告为第二个参数。 Internet Explorer不正确,因为它不是锚标记的实际值的“href”属性。

Anchors=Parent.getElementsByTagName("a");
Anchor=0;
while(Anchor<Anchors.length){
    Anchors[Anchor].onclick=function(){
        Plot("",this.getAttribute("href"));
        return false;
    };
    Anchor++;
};

我如何解决这个荒谬的问题?在最后的斜线之前,我是否需要从弦上脱掉一切?这似乎是一个冗长的方法!任何想法?

2 个答案:

答案 0 :(得分:1)

容易...

Anchors[Anchor].onclick=function() {
    var href = this.href || this.getAttribute("href");
    if(href.indexOf(location.href) >= 0)
      href = href.substring(location.href.length);

    Plot("", href);
    return false;
};

答案 1 :(得分:0)

更简单的解决方案是使用MSFT提供的“2”标志来获取HREF的源值而不是绝对值(并忽略其他浏览器):

this.getAttribute(“href”,2)

参考:http://www.quirksmode.org/bugreports/archives/2005/02/getAttributeHREF_is_always_absolute.html