0

Выполняя некоторые кросс-браузерные проверки (используя IE Edge в режиме IE8), страница не может быть правильно отображена из-за ошибки с Less JS (v2.7.1). Журнал консоли:Less.js + IE8 = Объект не поддерживает свойство или метод 'bind'

SCRIPT438: Объект не поддерживает свойство или метод 'связывания' файла: less.js, Line: 1896, Колонка: 1

То же самое относится и уменьшенная версия SCRIPT438: Object не поддерживает свойство или метод 'bind' Файл: less.min.js, Линия: 13, Колонка: 27226

Я читал, что IE8 и ниже не поддерживают привязку, следовательно, проблему.

Может ли кто-нибудь предложить решение о том, как я могу обойти эту проблему без необходимости сбрасывать меньше JS (не вариант)?

+0

См http://lesscss.org/usage/#browser-support, то есть: «Если вам нужно работать меньше в старом браузере, пожалуйста, используйте [подкладку ES-5] (https://github.com/kriskowal/es5-shim), который добавит функции javascript, которые требуют меньше ». –

+0

Спасибо. Посмотрите. –

ответ

0

Вы можете использовать полипол для bind, как MDN's one. Есть некоторые отличия от родного, как указано в ссылке.

if (!Function.prototype.bind) { 
    Function.prototype.bind = function(oThis) { 
     if (typeof this !== 'function') { 
     // closest thing possible to the ECMAScript 5 
     // internal IsCallable function 
     throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); 
    } 

    var aArgs = Array.prototype.slice.call(arguments, 1), 
     fToBind = this, 
     fNOP = function() {}, 
     fBound = function() { 
      return fToBind.apply(this instanceof fNOP 
        ? this 
        : oThis, 
        aArgs.concat(Array.prototype.slice.call(arguments))); 
     }; 

    if (this.prototype) { 
     // Function.prototype doesn't have a prototype property 
     fNOP.prototype = this.prototype; 
    } 
    fBound.prototype = new fNOP(); 

    return fBound; 
}; 

}

+0

Можно ли просто добавить это в файл less.js? Я довольно простой, когда дело доходит до JS, поэтому не уверен, что это простая копия> вставить исправление или если она должна быть интегрирована. –

+0

Он должен быть выполнен перед кодом, который использует bind. Отдельный скрипт, загруженный до less.js, будет работать. Возможно, вам понадобятся другие pollyfills для функций, не поддерживаемых IE8. –

+0

Спасибо за помощь Винченте. Он действительно обходил ошибку, но теперь только показывать другую (SCRIPT438: Object не поддерживает ключи свойств или метода «Файл: less.min.js, Line: 10, Column: 28054). Думаю, я начну искать альтернативное решение. –

 Смежные вопросы

  • Нет связанных вопросов^_^