JavaScript中有哪些方法可以重新获得执行线程的控制权
我试图枚举从浏览器到 JavaScript 代码的入口点。这包括初始脚本执行(简单的示例),以及在放弃主执行线程后重新获得主执行线程控制权的所有方法。
- 初始脚本执行
- 事件监听器,当不以编程方式触发时(
Node.addEventListener
、DOMWindow.addEventListener
、XMLHttpRequest.addEventListener
,所有对象。 oneventname
属性) setTimeout
setInterval
还有其他我应该考虑的吗?
(好奇的是:这样做的目的是将所有入口点包装在 try...catch
块中,以便可以在 UIWebView
中捕获和记录 iOS 上的错误。但它应该是有用的一般信息。)
I'm trying to enumerate the entry points from the browser to JavaScript code. This includes initial script execution (the trivial example), and all ways of regaining control of the main execution thread after relinquishing it.
- initial script execution
- event listeners, when not fired programmatically (
Node.addEventListener
,DOMWindow.addEventListener
,XMLHttpRequest.addEventListener
, allobject.oneventname
attributes) setTimeout
setInterval
Are there any others I should consider?
(For the curious: the point of this is to wrap all entry points in try...catch
blocks so that catching and logging errors on iOS is possible within a UIWebView
. But it ought to be useful general information to have.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Web Worker 是另一种可以启动回调的机制。
某些浏览器在创建函数的框架的事件循环中执行跨框架函数调用。其他人对所有帧使用单个事件循环,由于同源策略,这种情况是可能的。不过我不知道iOS。
例如
Web workers are one other mechanism that can initiate callbacks.
Some browsers execute cross frame function calls in the event loop of the frame that created the function. Others use a single event loop for all frames where such a thing is possible due to the same-origin policy. I don't know about iOS though.
E.g.