2016-05-03 11 views
1

私のマシンでIE 11を実行しています。私はgetElementsByClassNameを使用するWebページを持っています。私のマシン上のWebページにアクセスすると、ページが提供され、うまく動作します(getElementsByClassNameを実行します)。別のマシンの同じWebページにIEを使用してアクセスすると、getElementsByClassNameメソッドを見つけることができません。エラーが発生したマシンのブラウザーにコードを保存してアクセスすると、保存されたページは正常に動作します(elemmentsByClassNameが機能します)。何が起こっている? getElementsByClassNameを持つDOMまたはjavascriptのバージョンを使用するようブラウザに指示するにはどうすればよいですか?Internet Explorer 11は2台のマシンで異なる動作をします

var list = document.getElementsByClassName("mrClickableRow"); 
+0

キャッシュをクリアしますか? – Tyr

+0

参照:http://stackoverflow.com/questions/7410949/javascript-document-getelementsbyclassname-compatibility-with-ie – BadZen

+0

"から ""に変更してください。また、_degrade gracefully_ like 'if(!document.getElementsByClassName)... 'のように考えてください。 –

答えて

0

document.getElementsByClassNameはIE 9から市販されている、あなたは<script type="text/javascript">でJSを統合よろしいですか?

P.S. </body>(body closing tag)の前に<script>を使用してください。

0

互換性の問題については、この機能を使用できます。

window.getElementsByClassName = function(node, classname) { 
    var a = []; 
    var re = new RegExp('(^|)' + classname + '(|$)'); 
    var els = node.getElementsByTagName("*"); 
    for (var i = 0, j = els.length; i < j; i++) 
     if (re.test(els[i].className)) a.push(els[i]); 
    return a; 
} 

if (!document.getElementsByClassName) { 
    document.getElementsByClassName = function(className) { 
     return window.getElementsByClassName(document.body.parentNode, className); 
    }; 
} 

しかし、この関数と組み込み関数がわずかに異なっていることに注意してください:あなたはビルトインdocument.getElementsByClassName機能を使用する場合、それはHTMLCollectionを返します。 HTMLCollectionに含まれる要素のクラスを削除すると、HTMLCollectionからも削除されます。

1

IEが正しいドキュメントモードを使用してページをレンダリングしているかどうかを確認してください。そうでない場合、いくつか問題を引き起こす可能性のある古いDOM-APIをシミュレートできます。

IEでF12を押すか、設定メニューで選択して開発ツールを開きます。次に、[エミュレーション]タブに移動し、[ドキュメントモード]ドロップダウンを確認します。

+0

開発ツールは非アクティブですが、IEは常に最新バージョンをインストールしています。または、これは設定のどこかで変更できますか? – Aloso

+0

@Alosoこれは、特定のマシン上の特定のユーザープロファイルに固有の互換性リストによって異なる場合があります。互換性ビューで表示するように設定されているサイトは、IE8と同じように表示されます。 – Thriggle

関連する問題