2015-10-16 74 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模式。 :-)很高興元工作! –

相關問題