在Chrome中进行内联JavaScript重定向之前先中断JavaScript


91

我正在查看具有嵌入式javascript重定向(window.location = "/anotherpage")的页面。我想在Chrome中加载该页面,但禁用了重定向行,因此我可以使用该页面而不会被重定向。

这是我尝试过的:

  • 开发人员工具->齿轮->常规->禁用JavaScript。加载页面。它不会重定向(是!)。但是我仍然希望页面的其余javascript能够运行,但实际上并没有。

  • 键入URL,然后单击“开发人员工具”->“源”->“暂停(F8)”,速度很快!它尚未重定向(是!)现在,我想在取消暂停之前禁用重定向行,但是该部分甚至还没有加载到Developer Tools中。因此,我将开始逐步浏览其他文件的javascript代码,直到到达那里?但是,只要我退出其他文件javascript,它就会立即重定向(doh!)。

能做到吗?我认为禁用一行JavaScript应该很容易,但是我很困惑。

Answers:


142

开发人员工具->源->事件监听器断点(在右侧栏)->加载->检查卸载

这将使调试器在导航之前分派的unload事件中断。


2
再次感谢您的工作答复。我很想听听为什么在“这不起作用”消息上有这么多投票?这是旧版Chrome的问题吗?不能为之工作的人可以提供更多信息吗?
Christian Rondeau 2014年

8
最初,我很高兴看到此响应,但我可以确认它对我不起作用(即使我已按照建议检查卸载,页面重定向仍会发生,并且我没有机会在页面源中设置断点一个)。也许与首页“重定向”的方式有关?在我的页面的情况下A执行POST(通过JavaScript)到网页B(其JavaScript的我试图调试页面)
埃米尔·g ^

17
它工作正常,问题在于调用堆栈为空,因此它并没有真正的帮助,因为您将无法看到触发重定向的真正原因
Eugene Kuzmenko

8
@EugeneKuzmenko严重,我不知道这实际上如何帮助任何人
Will P.

1
仅当页面具有可在其中停止调试器的卸载或beforeunload处理程序时,此方法才有效。如果未注册任何此类处理程序,则调试器将不会触发。
伦贝尔

42

请执行下列操作

  1. 打开开发人员工具
  2. 转到“ 来源”标签
  3. 寻找事件监听器断点
  4. 展开加载选项
  5. 在这里检查卸载选项

Chrome卸载断点


@TomBrito在beforeunload中断时(我不得不使用它来躲避一些愚蠢的报纸付费专区),我可以检查元素。卸货时不能检查吗?我在使用Chrome 71.0.3578.98。
凌晨

12

我有一个第三方JS库,该库有错误的条件来重新加载页面。因此,页面已被连续重新加载。我试图找到错误的代码在哪里。

我尝试使用“事件侦听器断点”方法,但正如注释所言,您在卸载事件中没有堆栈跟踪,因此它毫无用处。

对我有用的解决方案:我创建了一个带有带沙箱属性的iframe标签的页面,例如,<iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe>然后将我的网站放在其中。这样一来,Chrome浏览器内部就会发生安全错误,控制台会显示JS尝试访问位置对象的位置。您可以单击它并查看代码。最好的办法是Chrome具有JS解压缩器(源代码窗口左下方的{}按钮),它很聪明,即使经过漂亮的打印也可以显示该行,因此即使在压缩的JS中也可以看到它。

有关沙盒属性的更多信息:https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox


如果代码(在该iframe)使用这种方法只适用top.location = "..."location = "..."
MEMS
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.