页面刷新前的断点?

时间:2016-08-21 14:58:02

标签: javascript google-chrome debugging breakpoints

我正在调试一些第三方缩小的Javascript,某个地方正在触发浏览器页面刷新。但是,我无法弄清楚代码的哪一部分导致刷新。

有没有办法在Chrome中设置一个断点,它会在页面刷新之前被点击,这样我就可以检查调用堆栈以查看导致它的原因了什么?

5 个答案:

答案 0 :(得分:23)

试试这个:

  1. 打开Chrome开发工具
  2. 导航到"来源"标签
  3. 在右侧面板中,展开"事件监听器断点"
  4. 展开"加载"树
  5. 查看beforeunloadunload选项
  6. 看看是否有帮助;截图如下。

    Chrome Dev Tools with Suggested Event Listener Breakpoints Checked

    修改:或者,如果这不起作用,您可以使用Chrome在所有已加载的脚本中搜索可能负责的代码。显然有a lot of ways to refresh the page with JavaScript,但他们大多有一些共同的字符串,例如" navigator"," location"," reload",&#34 ;窗口"

    最后,如果您指向同一页面的链接,可能会有一些JS触发点击它 - 不太可能,但值得探索,如果到目前为止还没有其他工作。

    (请原谅我在移动设备上的格式...)

答案 1 :(得分:5)

在devtool网络窗格中,切换"保留日志",仔细检查启动器列。

答案 2 :(得分:2)

您没有指定第三方库的功能。 如果它是广告或类似内容的ui组件,只需将其放在iframe内,并根据需要配置sandbox属性。https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe(向下滚动到沙箱属性部分)

如果它是由事件触发的东西,只需使用(仅在chrome dev工具中)getEveneListener()函数并遵循listener跟踪...(很难,但可能) 例如:

enter image description here

listener属性将引导您进入将要调用的实际函数。您可以在混淆的代码中搜索它们并添加调试器以了解它的用途。

还有许多其他方案 - 如果您可以指定更多。

答案 3 :(得分:2)

Firefox (不是Chrome,重要的是)开发人员工具中,转到控制台,输入addEventListener('beforeunload',()=>{debugger}),然后执行您的代码。调试器停在debugger语句后,查看调用堆栈。你会看到触发事件的原因。 Chrome没有它。

至少,这对我有用。

答案 4 :(得分:-2)

导航至Chrome>检查元素>来源>选择缩小的Javascript文件(Donot忘记点击{}选项以便更好地理解,点击下面的链接获取截图),然后设置断点并处理其余的。

CLICK FOR SCREENSHOT