Объект не поддерживает это свойство или метод EmberJs IE 8 проблема

Я получаю следующую ошибку на моей странице IE 8 (страница работает нормально в других браузерах).

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3)
Timestamp: Wed, 10 Sep 2014 06:48:45 UTC

Message: Object doesn't support this property or method
Line: 70532
Char: 5
Code: 0

Когда я проверил строку 70532 в упомянутом файле, я увидел этот код:

if (!Object.create && !Object.create(null).hasOwnProperty) {
      throw new Error("This browser does not support Object.create(null), please polyfil with es5-sham: http://git.io/yBU2rg");
    }

Что это означает, пожалуйста, polyfil с es5-sham:

 Please polyfil with es5-sham: http://git.io/yBU2rg

Как я могу исправить эту ошибку.

2 ответа

Object.create не поддерживается в IE8, поэтому ваш фреймворк просит вас "полифилировать" его, что означает, что вам нужно реализовать что-то, что должно было поддерживаться изначально, но по какой-то причине эта конкретная среда не знает об этом.

Это означает, что если вы хотите использовать Object.create Вы должны реализовать это самостоятельно. К счастью, вам не нужно много делать, URL ( https://github.com/es-shims/es5-shim/blob/master/es5-sham.js) указывает на файл, который содержит необходимые полифилы. Просто запустите этот скрипт до того, как это сделает ваш каркасный скрипт.

Обновить:
Эта строка кажется мне сломанной: !Object.create && !Object.create(null).hasOwnProperty,
Если Object.create не там, называя это как Object.create(null) должен выдать ошибку, но я думаю, что это должно быть что-то вроде "undefined не является функцией".

Я нашел другой polyfil, который работает в моем сценарии. Я нашел ответ по этой ссылке.

Я добавляю код формы по этой ссылке

if (!Object.create) {
    Object.create = function(proto, props) {
        if (typeof props !== "undefined") {
            throw "The multiple-argument version of Object.create is not provided by this browser and cannot be shimmed.";
        }
        function ctor() { }
        ctor.prototype = proto;
        return new ctor();
    };
}

добавление этого кода, кажется, делает трюк для меня. Единственное изменение, которое я сделал, я прокомментировал код, в котором генерируется исключение, так как оно приводит к другой ошибке.

Другие вопросы по тегам