【发布时间】:2016-06-26 21:01:46
【问题描述】:
我有一个模式对话框,当用户单击按钮时会打开。它必须是动态的。它有很多来自外部来源的图像,例如<img src="http://example.com/image.jpg">。打开此模式后,我想对所有加载的图像的高度求和。所以我打电话给imageCalculation()onShow
<p:dialog
id="myDialog"
widgetVar="myDialogWV"
modal="true"
dynamic="true"
onShow="imageCalculation(); ">
<ui:include src="/somePage.xhtml" />
</p:dialog>
<script type="text/javascript">
function imageCalculation(){
var total = 0;
$.each($('#form\\:myDialog').find('img'), function(k,v){
total += v.naturalHeight;
});
alert(total);
}
</script>
问题是在调用imageCalculation()的那一刻,图片还没有从外部加载,naturalHeight还是0。
有没有办法在所有对话框内容完全加载后运行 javascript?
编辑:somePage.xhtml 的内容由从 DB 获取 HTML 代码片段的 p:dataGrid 填充。其中一些代码是<img...所以理论上我无法更改它们
谢谢
【问题讨论】:
-
由于图像加载是异步的,您必须将加载事件处理程序绑定到每个处理程序并跟踪它们何时全部加载。应该在这里找到很多类似的帖子来帮助
-
谢谢我找到了一个解决方案会发布它
标签: javascript jsf primefaces