web-dev-qa-db-ja.com

このエラーが発生する理由:オブジェクトはInternetExplorerのプロパティまたはメソッド 'forEach'をサポートしていませんか?

私はmavenを使用してjenkinsプラグインでJavascriptに取り組んでおり、次のコードを使用しています。

   function arrayElements(element, index, array) 
     {
         var arrayPaths = element.split("\\");
         var projectSource = arrayPaths[2];
         var array = element.split("_");
         if (projectSource === global ) {             
             if (array[2]===filtro){
             document.getElementById("source").options.add(new Option(arrayPaths[3], element));
             }
         }
     }
    function fillCompiledSource(object, projects)
    {
        document.getElementById("source").innerHTML = "";        
        global = document.getElementById("branches").value;     
        projects.forEach(arrayElements)
    }
    var projects = new Array();</script><script>
    function fillCombo()
    {
         document.getElementById("source").innerHTML = "";
         global = document.getElementById("branches").value;     
         var array = document.getElementById("branches").value.split('/');
         global = array[1];
         projects.forEach(arrayElements)       
    }

これはInternetExplorerでのみ失敗し、ドキュメントモードがIE8標準の場合にのみ、理由とその解決方法がわかりません。

Pd:InternetExplorerは10です

12
davdomin

ええ、IE8を実装していないためですArray.forEach(他の多くの最新のJSメソッドでもありません)。 IE8で作業する必要がある場合は、 shim it (互換性のセクションを参照)する必要があります。

ちなみに、MDNには、サポートされていない他のほとんどのメソッドのリソースもあります。

11

これは役立つかもしれません。 jQueryの問題を解決するには:

//This will fail in IE8
myObject.each(function(index, value){
 //your code goes here
});

//This will work in IE8 and all modern browsers
$.each(myObject, function(index, value){
 //your code goes here
});
4
Joe L.

存在しないforEach関数をArray.prototype.forEeachにバインドすることもできます。

(function () {
    if ( typeof NodeList.prototype.forEach === "function" ) return false;
    NodeList.prototype.forEach = Array.prototype.forEach;
})();

私はこの投稿でそれを見つけました https://tips.tutorialhorizo​​n.com/2017/01/06/object-doesnt-support-property-or-method-foreach /。