jQuery.html(something)检测注入何时完成
jQuery.html( something ) detect when injection is complete
简而言之,我希望在注入html并呈现该html的内容后触发回调。原因是我需要马上知道新内容的高度。类似这样的东西:
$('div').html(tonsofstuff);
console.log( $('div').height() ); //works in Firefox, but returns 0 in Chrome
setTimeout(function(){
console.log( $('div').height() ); //works everywhere, but takes too long
},3000);
这个问题偶尔会出现在一些浏览器中(并且总是在chrome中)$('div').height()在新内容有高度之前触发。
我的幻想:
$('div').html(tonsofstuff, function(){
console.log( $('div').height() );
});
or even
$('div').html(tonsofstuff).load(function(){
console.log( $('div').height() );
});
这就是我所做的:
var height = $('div').html(tonsofstuff).height();
我在等待它出现时从未遇到过任何问题。
如果您的"tonsofstuff"有图像,则setTimeout攻击是错误的方法。您需要知道每个图像何时加载,然后进行DOM高度计算。为此,你可能需要内省html来加载,找到图像,并使用对一些东西的调用,比如图像预加载插件。我不一定推荐它;编写自己的方法是相当琐碎的(尽管某些方法可能存在一些gotcha)。我只知道有这样的事情应该会很好地工作。
如果chrome中出现问题,我假设您插入的内容包含come图像。Chrome不会计算图像的尺寸,直到它们被完全加载(DOM就绪是不够的)。因此,通常可以解决问题的是在window.onload事件上执行渲染。这样可以确保加载的图像和.height()
/.width()
正常工作。尽管我意识到这并不总是可能的,因为window.onload
事件是在DOMContentLoaded
之后很久才触发的。
另一种方法是通过相应图像标签的width
和height
属性显式地指定图像维度。如果你知道图像的大小,这可以工作。在这种情况下,没有必要在window.onload
上执行您的逻辑。
相关文章:
- 使用Objective-C的JavaScript注入方法
- 正在注入包含JS的HTML
- 迷你$provider注入茉莉花和角
- Angularjs工厂注入错误
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 如何在Ionic Android中将Javascript注入到web视图中
- 浏览器何时记录历史记录
- 为什么要对define.md和module.exports进行条件检查,以及条件何时通过
- 让javascript知道epub3电子书中何时播放媒体覆盖
- Android Webview通过Javascript注入CSS
- 如何判断何时将dom节点添加到文档中
- Meteor:在启动时将html注入客户端文件
- 注入工厂时,Angular停止工作
- 注入Javascript以选择具有指定值的所有单选按钮
- XSS通过地址栏注入
- 如何确定Vue何时完成DOM更新
- 如何检测何时使用javascript动态注入了多个样式表
- 服务如何知道注入它的控制器何时被破坏
- 在Node.js中,我如何判断何时解析完网页
- jQuery.html(something)检测注入何时完成