我正在调试一些第三方缩小的Javascript,某个地方正在触发浏览器页面刷新。但是,我无法弄清楚代码的哪一部分导致刷新。
有没有办法在Chrome中设置一个断点,它会在页面刷新之前被点击,这样我就可以检查调用堆栈以查看导致它的原因了什么?
答案 0 :(得分:23)
试试这个:
beforeunload
和unload
选项看看是否有帮助;截图如下。
修改:或者,如果这不起作用,您可以使用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
跟踪...(很难,但可能)
例如:
listener属性将引导您进入将要调用的实际函数。您可以在混淆的代码中搜索它们并添加调试器以了解它的用途。
还有许多其他方案 - 如果您可以指定更多。
答案 3 :(得分:2)
在 Firefox (不是Chrome,重要的是)开发人员工具中,转到控制台,输入addEventListener('beforeunload',()=>{debugger})
,然后执行您的代码。调试器停在debugger
语句后,查看调用堆栈。你会看到触发事件的原因。 Chrome没有它。
至少,这对我有用。
答案 4 :(得分:-2)
导航至Chrome>检查元素>来源>选择缩小的Javascript文件(Donot忘记点击{}选项以便更好地理解,点击下面的链接获取截图),然后设置断点并处理其余的。