私はプロジェクトに取り組んでおり、JavaScriptフレームワークを開発しています。元のコードは約700行なので、この行だけを貼り付けました。 includeメソッドはInternet Explorerでは機能しません。これに対する解決策はありますか?
var row_cells = tbl_row.match(/<td[\s\S]*?<\/td>/g);
row.Cells = new Array();
if (onRowBindFuncText != null) { /*Fonksyon tanımlanmaışsa daha hızlı çalış*/
var cellCount = 0;
for (i = 0; i < row_cells.length; i++) {
var cell = new Cell();
$.each(this, function (k, v) {
if ((row_cells[i]+"").includes("#Eval(" + k + ")")) {
cell.Keys.Push(new Key(k,v));
...コードが続く
IEではサポートされていないため、Opera( 互換性テーブルを参照 )でもサポートされていませんが、推奨される polyfill を使用できます。
ポリフィル
このメソッドはECMAScript 2015仕様に追加されており、一部のJavaScript実装ではまだ利用できない場合があります。ただし、このメソッドは簡単にポリフィルできます。
if (!String.prototype.includes) {
String.prototype.includes = function(search, start) {
'use strict';
if (typeof start !== 'number') {
start = 0;
}
if (start + search.length > this.length) {
return false;
} else {
return this.indexOf(search, start) !== -1;
}
};
}
@ Infer-onはすばらしい答えを示しましたが、特定の状況では問題があります。 for-inループを使用すると、追加したinclude "includes"関数が返されます。
ここに別のpollyfillがあります。
if (!Array.prototype.includes) {
Object.defineProperty(Array.prototype, "includes", {
enumerable: false,
value: function(obj) {
var newArr = this.filter(function(el) {
return el == obj;
});
return newArr.length > 0;
}
});
}
ちょうど同じ方法で動作する.search()> -1を使用できます。 http://www.w3schools.com/jsref/jsref_search.asp
if ((row_cells[i]+"").search("#Eval(" + k + ")") > -1) {
この選択された答えは文字列に対するものです。配列の「インクルード」を探している場合、polyfills.tsファイルに次を追加して問題を解決しました:
import 'core-js/es7/array';
これは、TypeScriptプロジェクトのポリフィルであり、 https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Global_Objects/Array/includes から取得され、有効なTypeScriptに変更されます。
if (!Array.prototype.includes) {
Object.defineProperty(Array.prototype, 'includes', {
value: function(searchElement, fromIndex) {
if (this == null) {
throw new TypeError('"this" is null or not defined');
}
const o = Object(this);
// tslint:disable-next-line:no-bitwise
const len = o.length >>> 0;
if (len === 0) {
return false;
}
// tslint:disable-next-line:no-bitwise
const n = fromIndex | 0;
let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
while (k < len) {
if (o[k] === searchElement) {
return true;
}
k++;
}
return false;
}
});
}
if (fullString.indexOf("partString") >= 0) {
//true
} else {
//false
}