Объект не поддерживает это свойство или метод Проблема 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");
    }

Что означает фраза Пожалуйста, полифил с es5-sham:

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

введите здесь описание изображения

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


person SharpCoder    schedule 10.09.2014    source источник


Ответы (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 не является функцией».

person Community    schedule 10.09.2014
comment
Спасибо за быстрый ответ. Даже после включения polyfil js я получаю ту же ошибку в той же строке - person SharpCoder; 10.09.2014
comment
подождите, это строка из исходного кода вашего фреймворка? !Object.create && !Object.create(null).hasOwnProperty, потому что он мне кажется сломанным. Если Object.create там нет, вызов его как Object.create(null) должен вызвать ошибку, но я думаю, что это должно быть что-то вроде «undefined is not a function». Вы уверены, что именно эта строка вызывает проблему? - person ; 10.09.2014
comment
Проблема в коде фреймворка. Когда я получаю сообщение об ошибке, ошибка содержит строку, которая не указывает на эту строку. - person SharpCoder; 10.09.2014
comment
хммм, ошибка говорит Строка: 70532. Как вы узнали, какой скрипт вызвал ошибку? Потому что из того, что вы опубликовали, я понятия не имею, где находится строка 70532. Вы дважды щелкнули по нему, и он был отправлен в эту конкретную строку в этом конкретном файле сценария? (Сейчас я не могу запустить экземпляр браузера IE8, поэтому могу только догадываться, как ведет себя эта среда) - person ; 10.09.2014
comment
Спасибо вам за помощь. Я добавил скриншот, на котором указано имя файла и строка, в которой произошла ошибка. Полифил, о котором я упоминал в своем вопросе, мне не помог. Но спасибо за объяснение, что такое полифил. Я погуглил и нашел еще один полифил, который помогает мне. Я голосую за ваш ответ. Ваше здоровье - person SharpCoder; 10.09.2014

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

Я добавляю код из этой ссылки

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();
    };
}

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

person SharpCoder    schedule 10.09.2014