Javascript .include () не работает в IE

1

Я работаю над функцией, которая просматривает список табличных значений на странице, и если заголовок столбца содержит какую-либо часть output, он будет соответствующим образом преобразовывать значение.

function createLink(field, val) {

var output = {
    'ntid': 'https://internal/profile/' + val,
    'email': 'mailTo:' + val
};

var i, key, keys = Object.keys(output);
for ( i = 0; i < keys.length; ++i ) {
        key = keys[i];
  if ((field.toLowerCase()).includes(key)) {
     return '<a href="'+output[key]+'" target="_blank">'+val+'</a>';
  }
}

return val;
}

Проблема, с которой я сталкиваюсь, заключается в том, что IE выдает ошибку в строке .includes() которой говорится, что "Объект не поддерживает свойство или метод" включает в себя "".

У меня было немного проблем с тем, чтобы заставить его работать так, как есть, но не понимал, что includes() должно быть то, что не все браузеры поддерживают.

Есть ли что-то еще, что я могу использовать вместо этого, что позволит использовать кросс-браузер?

Теги:

4 ответа

10
Лучший ответ

includes() является частью спецификации ES6, поэтому она не поддерживается в IE. Вместо этого вы можете использовать indexOf(element) !== -1

5

заменить:

if(field.toLowerCase().includes(key)) {

чтобы:

if(field.toLowerCase().indexOf(key) > -1) {
1

Для вашей справки Mozilla Developer Network показывает, какие браузеры поддерживают String.prototype.includes.

У IE нет поддержки. При этом вы всегда можете его полифонировать или делать так, как указывали другие, и использовать String.prototype.indexOf.

Polyfill src: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill

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;
    }
  };
}
0

Для реакции:

import 'react-app-polyfill/ie11';
import 'core-js/es5';
import 'core-js/es6';
import 'core-js/es7';

Решение проблемы для - includes(), find() и т.д.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню