javascript window.location假回调

时间:2012-05-04 11:46:37

标签: javascript html jquery-mobile

我需要进行假window.location = "testCall"调用,以便生成一个事件来绕过移动设备上的参数。作为本机工作,然而,我需要解除一个NotFound异常或主要忽略一个假的window.location调用。可能?谢谢

1 个答案:

答案 0 :(得分: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机制中,但目前我们运气不佳。