当前位置:  开发笔记 > 编程语言 > 正文

Javascript .pathname IE quirk?

如何解决《Javascript.pathnameIEquirk?》经验,为你挑选了2个好方法。

考虑以下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在这里有问题,这是什么交易?



1> Christoph..:

该窗口对象的W3C标准 -包括位置接口-是日期为2006年4月07日,即在实际的实现已经很多年它被指定.

标准如下:

路径

此属性表示Location的URI的路径组件,该URI包含主机和端口之后的所有内容,包括第一个问号(?)或散列标记(#).

这意味着应该包含前导斜杠,这与Mozilla的实现一致.

该位置对象MSDN文档中没有提到什么属性包含,但一个VBScript的位置对象页有你的发现一致的例子.

正如所述页面是©1996 - 在W3C参与前十年 - 说IE出错是不公平的,但我仍然认为这是一个错误.


已针对此问题向IE开发团队提交了错误报告.它只发生在未添加到文档本身的``标记中.解决方法是在抓取`pathname`之前将其添加到文档中,或者只是检查结果字符串是否以`/`开头.更多信息:https://connect.microsoft.com/IE/Feedback/Details/1002846

2> kennebec..:

关于这种行为的奇怪之处在于window.location.pathname在IE的所有版本中返回前导斜杠(在主机名之后),与所有其他浏览器相同.

它只是一个超链接('一个元素')的位置对象,它返回IE中没有斜杠的路径(以及Opera).

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有