考虑以下Javascript:
var anchors = document.getElementsByTagName('a');
for(var i=0; i < anchors.length; i++)
{
alert(a.pathname);
}当我在一个包含格式为"http://foo.com/bar“的链接的页面上运行它时,在IE8中我得到一个看起来像”http://foo.com/bar“的字符串。在Safari,Chrome,Firefox中,我得到的结果类似于"/bar“(注意前面的斜杠)。
这是IE的错吗,这是怎么回事?
发布于 2009-06-05 15:08:21
W3C standard on the window object -包括location接口-日期为2006年4月7日,即它是在实际实现多年后指定的。
标准是这样写的:
路径名
此属性表示位置的URI的路径组件,它由主机和端口之后的所有内容组成,直到第一个问号(?)或散列标记(#)。
这意味着应该包括前导斜杠,这与Mozilla's implementation一致。
MSDN doc on the location object没有提到属性包含的内容,但是page on the VBScript location object有一个与您的发现一致的示例。
正如上面所说的页面是©1996 --在W3C介入之前的十年--很难说IE有问题,但我仍然认为它是一个bug。
发布于 2009-06-05 16:08:08
此行为的奇怪之处在于,与所有其他浏览器一样,window.location.pathname在所有版本的IE中都会返回前导斜杠(在主机名之后)。
它只是一个超链接('a element')的location对象,在IE (以及Opera )中返回没有斜杠的路径。
https://stackoverflow.com/questions/956233
复制相似问题