我需要打一个假window.location = "testCall"
电话以生成一个事件来绕过移动设备上的参数。像本机一样工作,但是,我需要关闭一个 NotFound 异常或主要关闭一个假的 window.location 调用。可能的?谢谢
问问题
1473 次
1 回答
5
Object.getOwnPropertyDescriptor(window, 'location').configurable === false
在 Chrome 和 Safari 中(我假设在其他浏览器中)。因此,您似乎无法更改本机行为。
如果它表现得像一个普通的 EcmaScript 5 属性并且configurable
被设置为true
比你可以做这样的事情:
var descriptor = Object.getOwnPropertyDescriptor(window, 'location');
var setter = descriptor.set; // Doesn't exist although it should in spirit of ES5
descriptor.set = function (newLocation) {
try {
setter(newLocation);
} catch (e) {
console.log('Location error: ', newLocation, e);
}
};
// The line below will throw exception in real browser :(
// TypeError: Cannot redefine property: location
Object.defineProperty(window, 'location', descriptor);
我希望浏览器供应商将他们所有的神奇属性和对象迁移到标准的 EcmaScript 机制,但目前我们并不走运。
于 2012-05-04T13:06:14.250 回答