22

kod burada benim bir blok. FireFox ve Chrome'da mükemmel çalışır. Ama IE'de değil. Ben "Object doesn't support property or method 'includes'"() tüm tarayıcılarda çalışmıyor

function rightTreeSwapfunc2() { 
    if ($(".right-tree").css("background-image").includes("stage1") == true) { 
     $(".right-tree").css({ 
      backgroundImage: "url(/plant-breeding/img/scenes/plant-breeding/stage5.jpg)" 
     }) 
    } else { 
     $(".right-tree").css({ 
      backgroundImage: "url(/plant-breeding/img/scenes/plant-breeding/stage3.jpg)" 
     }) 
    } 
} 

Ben biraz o kadar değiştirip kullanabilirsiniz vanilya JS hatası alıyorum ve yapın:

document.getElementById("right-tree").classList.contains

Ama bunu elde etmek için bir yol olup olmadığını doğrusu görecekti JS'yi değiştirmeden ve HTML ve CSS'yi düzenlemeden önce IE'de çalışmak.

+0

yardımcı olur Ben garip bulmak AYI t peiner, jQueery, tüm tarayıcıları en düşük ortak paydaya getirmeyi başaramaz - eğer 'içerir 'IE'de çalışmıyorsa, herhangi bir tarayıcıda çalışmamalı –

+0

[includes()] (https: //developer.mozilla .org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes) çapraz tarayıcılarda sabit işlev değil – Girish

+0

jQueery ile ilgisi yoktur - soru kusurlu: p –

cevap

50

includes() belgelerine bakarsanız, çoğu tarayıcı bu özelliği desteklemez.

Sen yaygın toString() kullanarak dizeye özelliğini değiştirdikten sonra indexOf() desteklenen kullanabilirsiniz:

if ($(".right-tree").css("background-image").indexOf("stage1") > -1) { 
//           ^^^^^^^^^^^^^^^^^^^^^^ 

Ayrıca MDN gelen polyfill kullanabilirsiniz. resmi polyfill kullanmayan neden

if (!String.prototype.includes) { 
    String.prototype.includes = function() { 
     'use strict'; 
     return String.prototype.indexOf.apply(this, arguments) !== -1; 
    }; 
} 
+0

IE uyumluluk için '.includes()' örneklerimi değiştirmem gerekti. Haystack.includes (iğne) 'yi haystack.indexOf (iğne)! == -1' olarak değiştirdim ve IE11 üzerinde çalışıyor. – KillahB

1

IE11 yüzden String.prototype.includes uyguluyor mu?

Kaynak: ". Sağ ağaç " Bir daha çözüm kullanmaktır polyfill source

if (!String.prototype.includes) { 
    String.prototype.includes = function(search, start) { 
     if (typeof start !== 'number') { 
     start = 0; 
     } 

     if (start + search.length > this.length) { 
     return false; 
     } else { 
     return this.indexOf(search, start) !== -1; 
     } 
    }; 
    } 
-1

doğru veya yanlış

_.contains ($() döndürecektir hangi içeren css (" arka plan resim "), 'stage1')

Umut bu

+0

Eğer yanılmıyorsam, bu alt dizinler kütüphanesi tarafından sağlanan bir işlevdir.Onu zaten kullanıyorsa, sadece bu çokdüzey için tüm bir kütüphaneyi dahil etmek bir israf olurdu. –

İlgili konular