在 Chrome 中内联 javascript 重定向之前中断 javascript

问题描述 投票:0回答:4

我正在查看一个具有内联 JavaScript 重定向的页面 (

window.location = "/anotherpage"
)。我想在 Chrome 中加载页面,但禁用了重定向行,这样我就可以使用该页面而不会被重定向。

这是我尝试过的:

  • 开发者工具 -> Cog -> 常规 -> 禁用 JavaScript。加载页面。它不会重定向(耶!)。但我仍然希望页面的其余 javascript 运行,但它没有。

  • 输入 URL,然后单击开发人员工具 -> 源 -> 暂停 (F8),速度非常快!它尚未重定向(耶!)现在我想在取消暂停之前禁用重定向行,但该部分甚至尚未加载到开发人员工具中。所以我将开始单步执行其他文件的 javascript 代码,直到到达那里?但是一旦我退出其他文件 javascript,它就会立即重定向(doh!)。

这可以做到吗?我认为禁用一行 JavaScript 应该很容易,但我被难住了。

redirect google-chrome-devtools
4个回答
175
投票

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

这将使调试器在导航之前调度的卸载事件时中断。


56
投票

执行以下操作

  1. 打开开发者工具
  2. 转到来源选项卡
  3. 查找事件侦听器断点
  4. 展开加载选项
  5. 这里勾选卸载选项


13
投票

我有一个第三方 JS 库,它有一个错误的条件来重新加载页面。并且页面因此而不断重新加载。我试图找出错误的代码在哪里。

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

对我有用的解决方案: 我创建了一个带有带有沙箱属性的 iframe 标记的页面,例如

<iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe>
并将我的网站放入其中。这样chrome内部就会出现安全错误,控制台会显示JS尝试访问location对象的位置。您可以单击它并查看代码。最好的是 Chrome 有一个 JS 解压缩器(源窗口左下角的 {} 按钮),这很聪明,即使在漂亮的打印之后也可以显示该行,因此即使在压缩的 JS 中也可以看到它。

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


0
投票

非常旧的帖子,但也许这对某人有帮助:

打开浏览器 JavaScript 控制台。然后粘贴:

window.addEventListener("beforeunload", function() { debugger; }, false)

它会在重定向之前“暂停”。

© www.soinside.com 2019 - 2024. All rights reserved.