问题是什么?
仅在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++;
};
我如何解决这个荒谬的问题?在最后的斜线之前,我是否需要从弦上脱掉一切?这似乎是一个冗长的方法!任何想法?
答案 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