2016-08-21 53 views
12

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

有没有办法在Chrome中放置一个断点,在页面刷新之前会触发一个断点,以便我可以检查调用堆栈以查看造成它的原因?

+1

你可以尝试一个自定义的'onunload'监听器并在那里打破。 – Marvin

+0

然后,您可以[生成堆栈跟踪](http://stackoverflow.com/a/635852/558021)并查看哪些函数涉及触发重新加载。 – Lix

+1

您可能已经知道这一点。 Chrome的控制台中有一个复选框,在重新加载后,日志不会清除。 –

回答

-2

导航到Chrome> Inspect Element> Source>选择你的缩小的Javascript文件(不要点击{}选项以获得更好的理解,点击下面的链接获取截图),然后放置断点并处理剩下的部分。

CLICK FOR SCREENSHOT

+1

这对我的赏金理由没有帮助,因为我说我不是100%确定它在做什么文件。这只会在一个单独的文件中创建一个断点文件。 –

9

试试这个:

  1. 打开Chrome浏览器开发工具
  2. 导航到 “源” 选项卡
  3. 在右侧面板中,展开 “事件监听器断点”
  4. 展开“加载”树
  5. 检查beforeunloadunload选项

看看是否有帮助;下面的截图。

Chrome Dev Tools with Suggested Event Listener Breakpoints Checked

编辑:另外,如果不工作,你可以使用Chrome浏览器搜索所有加载脚本代码,可能是负责任的。显然有a lot of ways to refresh the page with JavaScript,但他们大多有一些常见的字符串,如“导航”,“位置”,“重新加载”,“窗口”。

最后,如果有在同一页你的链接,有可能一些JS被触发它 - 点击可能性不大,但值得探讨的问题,如果没有别的迄今的工作...

(请原谅我在手机上的格式化...)

+0

它不会放弃导致刷新的代码片段 – Siddharth

+0

对不起@Siddharth不知道我明白你在做什么? –

+0

我的意思是OP想要检测导致页面刷新的代码片段,你放这些事件的方式很好,但这种或那种方式我们无法知道触发刷新的代码的位置,希望你有更好的现在的想法 – Siddharth

2

您不指定第三方库的功能。 如果它是像广告之类的用户友好组件,只需将其放置在iframe内,并根据需要配置​​属性即可。 https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe(向下滚动到沙箱属性部分)

如果一些由事件触发,只需使用(在Chrome浏览器开发工具只)的getEveneListener()函数,并按照listener踪迹......(硬,但有可能) 例子:

enter image description here

监听器属性将导致你将要调用的实际功能。您可以在混淆的代码中搜索它们并添加调试器来了解它的用途。

还有很多其他情况 - 如果您可以指定更多。

3

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

0

Firefox(不是Chrome,这很重要)开发者工具,去控制台,输入addEventListener('beforeunload',()=>{debugger}),并执行您的代码。调试器在debugger语句处停止后,查看调用堆栈。你会看到触发事件的是什么。 Chrome并没有在那里。

至少,这对我有效。