考虑以下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在这里有问题,这是什么交易?
该窗口对象的W3C标准 -包括位置接口-是日期为2006年4月07日,即在实际的实现已经很多年它被指定.
标准如下:
路径
此属性表示Location的URI的路径组件,该URI包含主机和端口之后的所有内容,包括第一个问号(?)或散列标记(#).
这意味着应该包含前导斜杠,这与Mozilla的实现一致.
该位置对象MSDN文档中没有提到什么属性包含,但一个VBScript的位置对象页有你的发现一致的例子.
正如所述页面是©1996 - 在W3C参与前十年 - 说IE出错是不公平的,但我仍然认为这是一个错误.
关于这种行为的奇怪之处在于window.location.pathname在IE的所有版本中返回前导斜杠(在主机名之后),与所有其他浏览器相同.
它只是一个超链接('一个元素')的位置对象,它返回IE中没有斜杠的路径(以及Opera).