1. ホーム
  2. javascript

[解決済み] includes() がすべてのブラウザで動作しない

2022-03-10 05:47:06

質問

ここに私のコードのブロックがあります。これは、FireFoxとChromeで完璧に動作します。しかし、IEではうまくいきません。私はエラー"を得る。 Object doesn't support property or method 'includes' となります。

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)"
        })
    }
}

ちょっと変えてバニラJSで、やったりして。

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

しかし、JSを変更したり、HTMLやCSSを編集する前に、IEで動作させる方法があるかどうかを確認したいのです。

どのように解決するのですか?

のドキュメントを見ると includes() ほとんどのブラウザは、このプロパティをサポートしていません。

広くサポートされている indexOf() を使用してプロパティを文字列に変換した後 toString() :

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

からポリフィルを使用することもできます。 MDN .

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