javascript - 异步嵌入脚本后是否需要使用 window.onReady()?

标签 javascript dom asynchronous

我正在实现异步加载脚本的功能。 XHR 完成后,我将代码插入文档并调用回调方法。回调方法使用动态加载的代码。

我想知道的是,在附加脚本被解析之前我的回调会被调用吗?我是否需要使用 window.onReady() 并让浏览器引擎解析附加脚本并触发 window.onReady() 然后调用我的回调方法?

请不要告诉我使用<your favority library here> ,因为我这样做是为了学习。

编辑:或者,我应该插入一个带有 src 的脚本元素吗?和 async设置并收听脚本元素的 readystatechange事件?

最佳答案

这实际上取决于您如何加载它。

您可以加载一个脚本,然后在加载它之后对 responseText 进行 eval()。

或者,您也可以document.createElement('script'),然后调用回调方法。

伪代码:

load_xhr('path/to/js', function onReady (responseText) {

eval(responseText);

//OR

var script = document.createElement('script');

script.text = responseText;

//Append element to DOM

//THEN

callback_method();

});

Edit: Or, should I insert a script element with the src and async set, and listen to the script element's readystatechange event?

如果您这样做,浏览器的加载符号将会显示。如果您通过 XHR 加载它,用户将不会注意到任何东西。

关于javascript - 异步嵌入脚本后是否需要使用 window.onReady()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5688714/

相关文章:

javascript - ActiveX "Class doesn' t 支持自动化”

javascript - JavaScript 中的 Document 和 document 有什么区别?

javascript - ngRouter 到 ui-router

javascript - 使用两个不同的按钮切换两个 div(一个处于事件状态)

javascript - 在浏览器更改尺寸时更新画廊宽度/高度

javascript - 如何使用 JavaScript 验证输入字段

Javascript:我可以动态创建一个 CSSStyleSheet 对象并插入它吗?

reactjs - 不要在 JSX 中构建盲目分支 - React

node.js - 使用 Promise 调用 Node.js 中的异步递归函数

javascript - 许多 facebook 喜欢页面上的按钮,异步