我正在实现异步加载脚本的功能。 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/