我想更改分配給window.location
的所有鏈接。所以我認爲location
有getter &二傳手。這就是爲什麼我克隆它&然後我覆蓋了真正的window.location
:無法覆蓋window.location的setter&getter
var clonedLocation=Object.assign({},window.location);
Object.defineProperty(window, 'location', {
get: function (f) {
return clonedLocation;
},
set:function(o){
if(typeof o==='string'){
o=o+'?id=1';
}
clonedLocation=o;
}
});
};
預期的行爲(如果中重寫完成的),當你寫:
window.location='/go';
腳本應該重定向到/go?id=1
不/go
。
但是實際的行爲是此腳本重定向到/go
==>因此,window.location
制定者並沒有覆蓋,
如何覆蓋的window.location
二傳手?
見http://stackoverflow.com/questions/2073086/javascript-how-to-intercept-window-location-change – guest271314