【问题标题】:How to stop scripts execution on the page?如何停止页面上的脚本执行?
【发布时间】:2017-07-19 23:32:52
【问题描述】:

我在 Chrome 中打开了一个随机的互联网页面。我使用启用的 javascript 打开它,因为我需要执行一些脚本。

从某个时刻开始,我想停止脚本执行,因此不应运行任何计时器或事件处理程序。当然,使用无限循环是不行的,因为我希望页面能够响应。

我怎样才能做到这一点?

以下代码部分满足我的需要

document.body.outerHTML = document.body.outerHTML
for(t=setTimeout(()=>{}); t; --t) clearTimeout(t)

但是:

  1. document 上的事件侦听器和 ajax 回调将继续存在
  2. 这会导致解析html,所以一些无效的标记可以通过解析来改变

另外我希望有一些方法可以通过 devtools 来实现,而无需实际与页面代码进行交互。

PS:如果我需要使用其他浏览器,没关系。

【问题讨论】:

  • 你试过在你的第一行javascript设置断点吗?
  • @Sysix,在使用断点时尝试在页面上使用滚动。
  • hm in chrome 它磨损了。我使用 Firefox 开发者版,在那里我可以轻松滚动:)
  • @Sysix,好的,你可以在 FF 中滚动。但没有悬停样式,也无法设置焦点或输入文本。

标签: javascript google-chrome debugging google-chrome-devtools


【解决方案1】:

添加到 Gideon Pyzer:

Shift-Ctrl-I - 等待开发工具打开,
然后Shift-Ctrl-P - 如果您不等待:打印对话框将打开...
然后 - 见 Gideon Pyzer 的回答 -。

【讨论】:

    【解决方案2】:

    您可以使用 DevTools 中的命令菜单随时启用/禁用页面上的 JavaScript。您可以使用 Cmd+Shift+P (Mac) 或 Ctrl+Shift 访问此菜单+P(Windows/Linux)。

    开始输入 Disable JavaScript 并按 Enter 以禁用脚本执行。

    在下面的示例中,我运行了一个异步计时器来记录每 500 毫秒的增量计数。禁用 JavaScript 后,执行被暂停,控制台中没有任何其他记录。

    我后来通过键入“启用 JavaScript”并点击 Enter 重新启用了 JavaScript。执行此操作后,执行继续,计时器从中断处继续。

    注意:当您尝试禁用 JavaScript 时,任何仍在运行的同步代码都不会被终止。它将完成,然后将禁用进一步的执行。

    【讨论】:

    • 为了进一步控制,我想您可以在要“停止脚本执行”的确切代码行上设置一个断点,然后在暂停时禁用 JS。不过我没试过,所以不能确定没有任何副作用。
    • 太棒了!出于某种原因,我认为它会在页面重新加载后起作用。
    猜你喜欢
    • 2017-10-28
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多