等待注入的 <script> 元素中的 javascript 代码完全执行
Wait for complete execution of javascript code in an injected <script> element
我正在通过 ajax 加载一些 javascript 代码(作为 html 字符串中的 <script>
块),我正在使用 jquery.html()
将该有效载荷注入 <div>
。 jquery.html()
方法自动评估注入的 <script>
个元素。
我想等待 <script>
块中的代码完成执行,然后再将执行释放回主事件循环。即使 <script>
包含回调,如 $.ajax().done()
或 setInterval()
。即使它会导致无限循环,即使它会在很长一段时间内阻止处理任何其他事件。
这可能吗?我只是想知道 Javascript 中是否有某种同步包装器浏览器支持的实用程序。我的直觉是不,因为这似乎与 Javascript 的 单一 事件循环性质相反,但我想我会检查 :) 最终,我的目标是插入自定义javascript 根据特定的用户操作进入页面,并保证代码将完整执行。
请注意,我不需要使用jquery.html()
或<script>
注入,这只是我的起点。也许我能做的最好的事情就是告诉客户在他们的代码完成时调用特定的预定义回调函数,并确保在调用此函数之前我不更改 window?
您不能在 Javascript 中 "wait for the code in the block to complete execution before releasing execution back to the main event loop"。那根本做不到。
做对了,您可以插入带有 onload
处理程序的脚本标记,以便在这些脚本完成加载并完成同步执行(但不是异步执行)时通知您(通过回调)。
如果您想知道这些脚本中的异步执行何时完成,您必须在这些脚本中构建一些东西以在它们完成时通知您。
如果您打算使用 jQuery 的 .html()
进行脚本标记注入,您将失去对这个过程的很多控制,它变成了一个试图弄清楚什么的黑客项目你可以从过程之外做。
在所有情况下,您都无法阻止 javascript 的主事件循环在等待这一切完成时继续执行。
我正在通过 ajax 加载一些 javascript 代码(作为 html 字符串中的 <script>
块),我正在使用 jquery.html()
将该有效载荷注入 <div>
。 jquery.html()
方法自动评估注入的 <script>
个元素。
我想等待 <script>
块中的代码完成执行,然后再将执行释放回主事件循环。即使 <script>
包含回调,如 $.ajax().done()
或 setInterval()
。即使它会导致无限循环,即使它会在很长一段时间内阻止处理任何其他事件。
这可能吗?我只是想知道 Javascript 中是否有某种同步包装器浏览器支持的实用程序。我的直觉是不,因为这似乎与 Javascript 的 单一 事件循环性质相反,但我想我会检查 :) 最终,我的目标是插入自定义javascript 根据特定的用户操作进入页面,并保证代码将完整执行。
请注意,我不需要使用jquery.html()
或<script>
注入,这只是我的起点。也许我能做的最好的事情就是告诉客户在他们的代码完成时调用特定的预定义回调函数,并确保在调用此函数之前我不更改 window?
您不能在 Javascript 中 "wait for the code in the block to complete execution before releasing execution back to the main event loop"。那根本做不到。
做对了,您可以插入带有 onload
处理程序的脚本标记,以便在这些脚本完成加载并完成同步执行(但不是异步执行)时通知您(通过回调)。
如果您想知道这些脚本中的异步执行何时完成,您必须在这些脚本中构建一些东西以在它们完成时通知您。
如果您打算使用 jQuery 的 .html()
进行脚本标记注入,您将失去对这个过程的很多控制,它变成了一个试图弄清楚什么的黑客项目你可以从过程之外做。
在所有情况下,您都无法阻止 javascript 的主事件循环在等待这一切完成时继续执行。