Javascript 如何确定HTML块何时完全呈现
我使用AJAX调用动态地向页面添加HTML块。我需要知道元素添加到页面后的高度,但我无法获得准确的结果,因为添加的元素需要未知的渲染时间。是否有任何方法可以确保在元素在页面上完成呈现后运行某些JS。如果没有看到标记和/或代码,很难知道,但是如果您使用的是AJAX,您可能希望在Javascript 如何确定HTML块何时完全呈现,javascript,html,Javascript,Html,我使用AJAX调用动态地向页面添加HTML块。我需要知道元素添加到页面后的高度,但我无法获得准确的结果,因为添加的元素需要未知的渲染时间。是否有任何方法可以确保在元素在页面上完成呈现后运行某些JS。如果没有看到标记和/或代码,很难知道,但是如果您使用的是AJAX,您可能希望在.done()方法中捕获一些逻辑。请看这里: 另外,您可能想看看jQuery的承诺: DOM是同步操作的,因此当调用appendChild/append/innerHTML/etc返回时,HTML会“完全呈现” 然而,不同
.done()
方法中捕获一些逻辑。请看这里:
另外,您可能想看看jQuery的承诺:
DOM是同步操作的,因此当调用
appendChild
/append
/innerHTML
/etc返回时,HTML会“完全呈现”
然而,不同步发生的是资源(即图像)的加载。因此,虽然可以在插入内容后检查该行上新插入内容的渲染高度,但该高度将不包括任何图像的高度
要解决此问题,可以显式指定图像的宽度和高度–…');/或者别的什么
$('somediv img')。on('load',function(){
var h=$('#somediv').height();
//…并对高度做你想做的事
});
可能与负责呈现的代码重复,可能会设置一些标志。这并不完全符合犹太标准,但在附加的HTML工作之后添加一个
标记会吗?(老实说,我不知道)只要使用google chomre的“inspect element”选项来观察HTML代码,如果他正在添加来自AJAX调用结果的内容,根据定义,他已经在成功回调中做了一些事情。你是对的,@josh3736,但他没有提供任何代码来知道具体做了什么。
$('#somediv').html('... <img src="..."> ...'); // or whatever
$('#somediv img').on('load', function() {
var h = $('#somediv').height();
// ...and do what you will with the height
});