Javascript 窗口位置更改时中断?
我有一个页面在不应该重定向的时候重定向,我试图找出是谁在做这件事。首先,我尝试劫持window.location:Javascript 窗口位置更改时中断?,javascript,google-chrome,firebug,google-chrome-devtools,Javascript,Google Chrome,Firebug,Google Chrome Devtools,我有一个页面在不应该重定向的时候重定向,我试图找出是谁在做这件事。首先,我尝试劫持window.location: window.location = (function (location) { // location is now hidden inside a closure. We can override it var Location = Object.create(location); // Location is now our proxy. We can
window.location = (function (location) {
// location is now hidden inside a closure. We can override it
var Location = Object.create(location);
// Location is now our proxy. We can use it to catch changes
window.__defineGetter__('location', function () { return Location });
window.__defineSetter__('location', function (x) { debugger; location = x; return x; });
// etc etc, considered assignments to location.href, location.search, location.host etc., as well as calls to location.replace and location.assign
}(window.location));
这在Chrome中根本不起作用。出于安全原因,无法在window.location上执行setter和getter。好啊接下来我试着观察OnLoad和OnBeforeLoad:
['unload', 'beforeunload'].forEach(function (evName) {
window.addEventListener(evName, function () {
debugger; // Chance to check everything right before the redirect occurs
});
});
我知道window.location的值会一直保持不变,直到onunload事件之后,同样是出于安全原因,但我希望得到一些其他线索;没有这样的运气。接下来,我尝试在我自己的脚本中可以找到的、可以分配window.location的每个点上放置断点。根据Chrome调试器,它们都不会被命中。啊。顺便说一句,这种重定向在FF中没有发生,我已经尝试重新启动Chrome。我觉得我真的什么都试过了,却一事无成,这意味着我即将成为一名开发人员?求你了
在任何浏览器中,操作调试器的人有没有办法打断重定向页面位置的线路?我知道允许自动访问这些信息会带来安全隐患,但是否没有任何东西可以授予开发人员特权并允许他们这样做?如果不是,处理这种情况的正常方式是什么?这似乎很常见,我不认为有人喜欢在一个概念上简单的问题上被阻塞数小时或数天。TIA网络选项卡帮助您,打开“保留日志”复选框,启动器列将包含导致重定向的javascript位置。最坏的情况是,您可以在某个地方放置一个断点,然后手动单步执行代码,直到找到违规者,这就是我现在要做的,但是,作为一个练习,考虑重定向来自一个动态包含的脚本标记://重定向到Google .com文档.Boo.AppDebug(Deal.CealEngEnter(“脚本”))。appendChild(document.createTextNode(decodeURIComponent(“%77%69%6e%64%6f%77%2e%6c%6f%63%61%74%6f%6e%2e%61%73%73%69%67%6e%28%27%68\%74%70%3a%2f%2f%77%77%2e%67%6f%6f%67%6f%67%6c%65%2e%63%6f%6d%27%29”))这就是为什么我想知道是否有一个诀窍可以解决这个难题,专业人士如何减少在此类问题上花费的时间。对此有何更新?我也在尝试同样的事情。其实不是同一个问题,也没有这个问题的答案……是的,堆栈溢出的一个荒谬之处是,人们可以出现并标记不存在的重复项,而且似乎没有办法消除它。这会很有用,但在我的情况下,它只会说“其他”。不是很有帮助,Chrome<代码>:/哇!我不知道。谢谢:)那么当它只说“其他”的时候你会怎么做?似乎没有解决这个问题的方法。我遇到了完全相同的问题,在我的案例中,这是负责的
,定义在head部分。它被报告为启动器Other
。在我的例子中,表单提交也被报告为Other
forgetonsubmit=“event.preventDefault()”