2015-10-16 43 views
2

(已经看到similar question但它不是同一个问题)。为什么document.GetElementsByClassName在本地驱动器上工作,但不在网络驱动器上工作?

这是一个打算在浏览器本地运行的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调试器的功能。

任何指针都非常受欢迎。

+2

IE是否运行在不支持该方法的IE8模式下? – epascarello

回答

3

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

你可以试着让IE政策*改变,或试图争论IE与提交:

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

this answer要求,将工作),或者你可以使用querySelectorAll

var sections = document.querySelectorAll(".SECTION"); 

querySelectorAll一直存在于IE8中,而getElementsByClassName直到IE9才被添加。

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


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

+0

querySelectorAll也没有工作(同样的例外),但元标记做了伎俩,谢谢。 –

+0

@SimonSellick:Blech,它一直回滚到IE7模式。 :-)很高兴元工作! –

相关问题