Ошибка «Невозможно переопределить ненастраиваемое свойство location» в window.location в javascript с помощью приложения Universal Windows (UAP / UWP) - PullRequest
1 голос
/ 27 января 2020

У меня был Windows 8.1 jsproject, теперь обновленный до приложения Universal Windows (UAP / UWP).

Ранее эта функция работала, она вызывала как

installLocationProxy(window);
installLocationProxy(document);

function installLocationProxy(obj) {
            var descriptor;
            var descriptorProto = obj;
            do {
                descriptor = Object.getOwnPropertyDescriptor(descriptorProto, "location");
                descriptorProto = !descriptor && descriptorProto && Object.getPrototypeOf(descriptorProto);
            } while (descriptor == null);
            if (!descriptor || !descriptor.get || !descriptor.set)
                return;
            var proxy = new LocationProxy(descriptor.get.call(obj));
            Object.defineProperty(obj, "location", {
                "get": function () {
                    return proxy;
                },
                "set": function (location) {
                    if (typeof location === 'string' || location && location instanceof String) {
                        proxy.assign(location, NavigationMethods.Location);
                    }
                    else {
                        return descriptor.set.call(obj, location);
                    }
                }
            });
        }

но теперь я получаю сообщение об ошибке "Не удается переопределить ненастраиваемое свойство 'location'" в этой строке Object.defineProperty(obj, "location".

Во время поиска в Google я обнаружил, что теперь window.location доступен только для чтения и недоступен для записи, поэтому не может быть переопределено.

Для справки это можно проверить здесь https://gist.github.com/zacharytamas/082e538784ebe07e40f9

Но я не уверен, как переопределить свойство window.location? Кто-нибудь может помочь?

...