为什么document.GetElementsByClassName可以在本地驱动器上运行,但不能在网络驱动器上运行?

时间:2015-10-16 14:10:42

标签: javascript

(已经看过similar question,但这不是同一个问题。)

这是一个打算在本地浏览器中运行的HTML页面(即双击文件资源管理器中的页面),未提供

页面链接到一个带有一些函数的简单JS文件。如果页面和脚本位于本地驱动器上,则按预期工作。但是当它们在网络驱动器上时,其中一个函数失败,除了'对象不支持属性或方法'getElementsByClassName'。功能是:

function DisplaySection(section)
{
  var sections = document.getElementsByClassName("SECTION");
  for (var i = 0; i < sections.length; i++)
  {
    sections[i].style.display = sections[i].id == section ? "block" : "none";
  }
}

要确认:JS函数在两个环境中都可见,并且已正确连接到文档 - 我可以使用F12调试器进入失败的函数。

非常欢迎任何指示。

1 个答案:

答案 0 :(得分:3)

这可能是因为IE中的(in)兼容性视图,默认情况下, 为Intranet资源。所以IE进入(in)兼容模式,其中没有getElementsByClassName

您可以尝试更改IE政策*,或尝试通过以下方式将IE提交提交:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

this answer声称可以使用),或者您可以使用querySelectorAll

var sections = document.querySelectorAll(".SECTION");
在IE8中一直存在

querySelectorAll,而在IE9之前没有添加getElementsByClassName

*“策略”是指您组织的Active Directory策略,可以确定此IE设置。

或者,当然,使用默认情况下不做蠢事的网络浏览器</rant>