在浏览器控制台中执行时暂停 Javascript
Posted
技术标签:
【中文标题】在浏览器控制台中执行时暂停 Javascript【英文标题】:Pause Javascript when executing it in browser console 【发布时间】:2019-04-23 01:03:57 【问题描述】:我需要在 Chrome 的控制台中执行 javascript,但有一些延迟。如何做到这一点?
我需要这个的原因是,一旦焦点从网页(或网页的某个元素)发生变化,它就会重新绘制。因此,我想启动我在控制台中执行的脚本,延迟几秒钟,这样我就可以将焦点更改为我正在使用的页面上的正确元素。
编辑 1:Dinesh Padiyan。
不适合我,截图:
【问题讨论】:
你最好使用调试器来遍历代码。 您是否尝试过将debugger;
语句放在要强制执行暂停的位置?在此处查看更多信息:w3schools.com/jsreF/jsref_debugger.asp
我认为debugger;
会阻止所有javascript被执行。
你需要使用双引号。我已经相应地编辑了我的答案。
该行应该是console.log("I won't execute until you say so")
;
【参考方案1】:
如果出于调试目的需要延迟,则需要在代码中添加debugger;
语句。当您添加调试器并打开开发人员工具时,脚本执行将在您的 debugger;
语句处暂停,您可以在开发人员工具中检查您的代码。
console.log('I will execute');
debugger; // execution will pause at this line
console.log("I won't execute until you say so");
如果您需要延迟执行您的网站行为,您可以使用setTimeout()
来延迟调用。
console.log('I will be printed immediately');
setTimeout(function()
console.log('I will be printed after 5s');
, 5000); // 5s delay
【讨论】:
【参考方案2】:您可以像这样扩展console
对象,然后使用自定义logLater
方法。
console.logLater = (message, delay) => setTimeout(function()
console.log(message);
, delay);
console.log('I will be printed immediately');
console.logLater('I will be printed after 3 seconds', 3000);
【讨论】:
如何将您的示例与document.activeElement
之类的内容一起使用?【参考方案3】:
function delay (ms) return new Promise(resolve => setTimeout(resolve, s));
“异步”工作演示: http://zarsoft.info/software/_Test/pause_javascript/index.html
【讨论】:
以上是关于在浏览器控制台中执行时暂停 Javascript的主要内容,如果未能解决你的问题,请参考以下文章
在浏览器的开发工具中暂停语句时,如何在该语句之后立即终止执行?
在调试模式下执行控制台应用程序后,如何让 Visual Studio 暂停?