【问题标题】:Break javascript before an inline javascript redirect in Chrome在 Chrome 中的内联 javascript 重定向之前中断 javascript
【发布时间】:2012-09-03 19:42:42
【问题描述】:

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

这是我尝试过的:

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

  • 键入 URL,然后单击开发者工具 -> 源 -> 暂停 (F8) 真快!它还没有重定向(耶!)现在我想在取消暂停之前禁用重定向行,但那部分甚至还没有加载到开发者工具中。所以我将开始逐步浏览其他文件的javascript代码,直到我到达那里?但是,一旦我退出其他文件 javascript,它就会立即重定向(doh!)。

这可以吗?我认为禁用一行 javascript 应该很容易,但我很难过。

【问题讨论】:

    标签: redirect google-chrome-devtools


    【解决方案1】:

    我有一个 3rd 方 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 = "..." 时才有效
    【解决方案2】:

    执行以下操作

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

    【讨论】:

    • @TomBrito 在卸载前休息时(我不得不用它来躲避一些愚蠢的报纸付费墙),我可以检查元素。卸货时不能检查吗?我在 Chrome 71.0.3578.98 上。
    【解决方案3】:

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

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

    【讨论】:

    • 再次感谢您的工作答案。我很想知道为什么这么多人对“这不起作用”的消息表示赞成;这是旧版 Chrome 的问题吗?对其不起作用的人可以提供更多信息吗?
    • 我最初很高兴看到这个回复,但我可以确认它对我不起作用(即使我按照建议检查了卸载,页面重定向仍然发生,我没有机会在页面 A) 的源代码中设置断点。也许它与第一页“重定向”的方式有关?在我的情况下,页面 A(我正在尝试调试其 javascript 的页面)对页面 B 执行 POST(通过 javascript)。
    • 不错!还不知道事件侦听器断点...感谢您的评论
    • 它工作正常,问题是调用堆栈是空的,所以它不是很有帮助,因为你将无法看到实际触发重定向的原因
    • @EugeneKuzmenko 说真的,我不知道这对任何人有什么帮助
    猜你喜欢
    • 2013-05-11
    • 2012-08-25
    • 2011-07-06
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多