Назначение свойств только для чтения не допускается в строгом режиме IE11.

IE11 сказал мне, что var self = this является переменной только для чтения... Тем не менее, я ничего не присваиваю ей после ее точки объявления. Единственная переменная — это высота, которая меняется. Хотя я мог бы изменить его при использовании var

'использовать строгий';

    var onDocumentLoad = require('fe-client-utils/src/dom/onDocumentLoad');
    var onOrientationChange = require('fe-client-utils/src/dom/onOrientationChange');

    var faPageHeight = function () {

    };

    var FA = {
        init: function () {
            this.faAddons = document.querySelector('.fa-addons');
            this.faFooter = document.querySelector('.fa-footer');
            this.extraWideChild = document.querySelector('.extraWide > div');
            this.extraWide = document.querySelector('.extraWide');
            this.faPages = document.querySelector('.fa-pages');
            this.pageContent = document.getElementById('page-content');
            this.faPageItems =  document.querySelectorAll('.fa-page');
            this.moveElements();
            this.faPageHeight();
        },
        faPageHeight: function () {
            var height = 0;
            var self = this;

            Object.keys(self.faPageItems).forEach(function (item, index) {
                height += self.faPageItems[item].offsetHeight;
            });

            height += 150;
            this.extraWideChild.style.height = height+'px';
        },
        moveElements: function () {
            this.faAddons.style = '';

            this.pageContent.appendChild(this.faAddons);
            this.pageContent.appendChild(this.faFooter);

            this.faFooter.style.display = 'block';
        }
    }

    onDocumentLoad(function () {
        FA.init();
    });

    onOrientationChange(function () {
        FA.faPageHeight();
    });

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

Я получаю следующую ошибку SCRIPT5045: Assignment to read-only properties is not allowed in strict mode

Согласно Microsoft, вы не должны возможность перезаписать свойство только для чтения. Я не верю, что я. Так почему я получаю ошибку?

  • Свойство только для чтения
  • Запись в свойство только для чтения
  • SCRIPT5045: назначение свойств только для чтения не разрешено в строгом режиме.
  • JavaScript
  • var testObj = Object.defineProperties({}, { prop1: { value: 10, writable: false // by default }, prop2: { get: function () { } } }); testObj.prop1 = 20; testObj.prop2 = 30;

person Jamie Hutber    schedule 04.10.2016    source источник
comment
Вы уверены, что именно эта строка вызывает ошибку? я не могу это воспроизвести   -  person Jaromanda X    schedule 04.10.2016
comment
Интересно. Я обновлю вопрос полным файлом. Интересно, является ли инкапсуляция всего этого в объект причиной   -  person Jamie Hutber    schedule 04.10.2016
comment
минимальный, полный и проверяемый пример кода, демонстрирующий проблему, был бы лучше   -  person Jaromanda X    schedule 04.10.2016
comment
Вполне может быть, что «я» является зарезервированным словом в IE11 Strict — попробуйте изменить его на «себя» или «currElm» и посмотрите, что произойдет.   -  person Tony Duffill    schedule 05.10.2016


Ответы (1)


Это было последнее, что я когда-либо ожидал, чтобы решить эту проблему. Я также сделал, поскольку комментарии предложили полагать, что это была переменная self, поскольку она зарезервирована.

Однако строка, которая нарушила его, была:

this.faAddons.style = '';

Ничего общего с линией, предложенной IE.

Поэтому, конечно, я установил это, чтобы удалить атрибут, а не просто установить его пустым.

this.faAddons.removeAttribute('style')
person Jamie Hutber    schedule 06.10.2016