如何触发一些javascript一旦html(已通过ajax加载)加载
How to trigger some javascript once html (which has been loaded via ajax) loads?
我正在通过ajax加载html,然后将该html放入div中。一旦将html放入div中,我如何触发javascript ?
我不知道如果onload事件是我正在寻找这个,或者如果它甚至与div元素可用。请记住,这些html将被异步地放入div中。
编辑:HTML有一个嵌入的YouTube视频,所以它必须加载一个图像。
我如何触发javascript一旦html已放入div已加载?
您只需在将上下文放入div后,在XMLHttpRequest
提供的onreadystatechange
回调中(或由您正在使用的任何库提供的"完成"回调)。
例如:
var xhr = new XMLHttpRequest(/* ... */);
// ...
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status >= 200 && xhr.status <= 299) {
/* ...put the content in the div...*/
/* ...call your function... */
}
};
xhr.send();
您还没有展示如何将内容放在div
中,但它立即放在那里,因此不需要回调。
一些评论提出了一个有用的问题:在加载的内容中如何处理图像等?那就更复杂了
将内容放入div
(让我们假设div
在一个创造性地命名为div
的变量中)之后,您需要知道有多少不完整的图像(考虑到竞争条件,因为尽管浏览器上的JavaScript是单线程的,但浏览器不是),然后在所有图像加载后触发代码。
有点像(假设这都在一个函数中,也许是onreadystatechange
处理程序):
var images = div.querySelectorAll('img'),
img, i, done = false;
for (i = 0; i < images.length; ++i) {
img = images[i];
img.onload = img.onerror = checkDone;
}
checkDone();
function checkDone() {
var x, completed = 0;
if (done) {
return;
}
for (x = 0; x < images.length; ++x) {
if (images[x].complete) {
++completed;
}
}
if (completed === images.length) {
done = true;
/* ...call your "load" function here... */
}
}
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- 如何通过ajax增加/减少PHP变量值并重新加载函数
- 页面加载后通过javascript显示图像
- 页面加载时通过JQUERY获取SelectList值
- 如何在加载时通过jQuery选择单选按钮
- 如何使用 AngularJS 在页面加载时通过查询字符串值来设置单选按钮值
- 在重新加载期间通过 url 发送参数
- 如何在图像加载时通过预加载和显示活动指示器快速加载网页中的图像
- 如何检测文档加载已通过javascript启动
- 如何在关闭弹出窗口后重新加载已存在的页面
- 在初始页面加载时通过Ajax加载内容的设计模式
- 动态异步加载CSS(通过在Javascript中设置“href”属性)
- 正在删除/重新加载已加载的脚本
- 通过Javascript添加所述内容后,发现内容已完全加载
- 如何触发一些javascript一旦html(已通过ajax加载)加载
- Typescript加载模块通过AMD失败
- 在窗口加载时通过URL传递值给JS函数
- 代码注入到Gmail通过谷歌Chrome扩展-如何确保我的脚本注入时,它已完成加载
- 通过文档注入脚本后执行函数.写入已完成加载