Is it possible to overwrite window.location function with a custom function?

坚强是说给别人听的谎言 提交于 2019-12-18 15:05:10

问题


Is it possible to disable, or even better, replace with a custom function, window.location?

This question is related: Disable a built-in function in javascript (alert)

While it works quite well for window.alert, this does not work for window.location.

We would love to be able to find a way to replace or disable (replace would be ideal, so we can AJAX log) window.location... Dirty advertisers have at times before used this to steal people away from our web properties.

Any ideas?

Even something that only works on a few specific browsers would be fine as once caught (via AJAX logging) we can act on this fairly quickly.


回答1:


I don't believe you can reassign window.location. From MDN:

Summary

Returns a Location object, which contains information about the URL of the document and provides methods for changing that URL. You can also assign to this property to load another URL.

https://developer.mozilla.org/en/DOM/window.location

As it takes a value like a property, how would you "reassign" the object/function to another value? I don't think it's possible due to the property behavior.




回答2:


try this

var _window = {
       location: "myLocation"
};

(function (window) {
   console.log(window.location);
}(_window));


来源:https://stackoverflow.com/questions/6478617/is-it-possible-to-overwrite-window-location-function-with-a-custom-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!