考虑以下Javascript:
var anchors = document.getElementsByTagName('a');
for(var i=0; i < anchors.length; i++)
{
alert(a.pathname);
}
当我在包含格式为“http://foo.com/bar”的链接的页面上运行时,在IE8中我得到一个看起来像“bar”的字符串。在Safari,Chrome,Firefox中,我得到了类似“/ bar”的内容(请注意前导斜杠)。
IE在这里有问题,这是什么交易?
答案 0 :(得分:28)
W3C standard on the window object - 包括位置界面 - 日期为2006年4月7日,即在实际实施已经存在多年后指定。
标准如下:
<强>路径名强>
此属性表示Location的URI的路径组件,该URI包含主机和端口之后的所有内容,包括第一个问号(?)或井号(#)。
这意味着应包含前导斜杠,这与Mozilla's implementation一致。
MSDN doc on the location object未提及该属性包含的内容,但page on the VBScript location object有一个与您的发现一致的示例。
正如所述页面是©1996 - 在W3C参与前十年 - 说IE出错是不公平的,但我仍然认为这是一个错误。
答案 1 :(得分:17)
这种行为的奇怪之处在于 window.location.pathname 在IE的所有版本中返回前导斜杠(在主机名之后),与所有其他浏览器相同。
只有超链接('一个元素')的位置对象才能返回IE中没有斜杠的路径(以及Opera)。
答案 2 :(得分:-1)