我正在调试某个第三方缩小的Javascript,某处正在触发浏览器页面刷新。但是,我无法弄清楚哪部分代码导致了刷新。页面刷新前的断点?
有没有办法在Chrome中放置一个断点,在页面刷新之前会触发一个断点,以便我可以检查调用堆栈以查看造成它的原因?
我正在调试某个第三方缩小的Javascript,某处正在触发浏览器页面刷新。但是,我无法弄清楚哪部分代码导致了刷新。页面刷新前的断点?
有没有办法在Chrome中放置一个断点,在页面刷新之前会触发一个断点,以便我可以检查调用堆栈以查看造成它的原因?
导航到Chrome> Inspect Element> Source>选择你的缩小的Javascript文件(不要点击{}选项以获得更好的理解,点击下面的链接获取截图),然后放置断点并处理剩下的部分。
这对我的赏金理由没有帮助,因为我说我不是100%确定它在做什么文件。这只会在一个单独的文件中创建一个断点文件。 –
试试这个:
beforeunload
和unload
选项看看是否有帮助;下面的截图。
编辑:另外,如果不工作,你可以使用Chrome浏览器搜索所有加载脚本代码,可能是负责任的。显然有a lot of ways to refresh the page with JavaScript,但他们大多有一些常见的字符串,如“导航”,“位置”,“重新加载”,“窗口”。
最后,如果有在同一页你的链接,有可能一些JS被触发它 - 点击可能性不大,但值得探讨的问题,如果没有别的迄今的工作...
(请原谅我在手机上的格式化...)
您不指定第三方库的功能。 如果它是像广告之类的用户友好组件,只需将其放置在iframe
内,并根据需要配置属性即可。 https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe(向下滚动到沙箱属性部分)
如果一些由事件触发,只需使用(在Chrome浏览器开发工具只)的getEveneListener()函数,并按照listener
踪迹......(硬,但有可能) 例子:
监听器属性将导致你将要调用的实际功能。您可以在混淆的代码中搜索它们并添加调试器来了解它的用途。
还有很多其他情况 - 如果您可以指定更多。
在devtool,网络窗格中,切换“保留日志”,仔细检查启动器列。
在Firefox(不是Chrome,这很重要)开发者工具,去控制台,输入addEventListener('beforeunload',()=>{debugger})
,并执行您的代码。调试器在debugger
语句处停止后,查看调用堆栈。你会看到触发事件的是什么。 Chrome并没有在那里。
至少,这对我有效。
你可以尝试一个自定义的'onunload'监听器并在那里打破。 – Marvin
然后,您可以[生成堆栈跟踪](http://stackoverflow.com/a/635852/558021)并查看哪些函数涉及触发重新加载。 – Lix
您可能已经知道这一点。 Chrome的控制台中有一个复选框,在重新加载后,日志不会清除。 –