javascript - 动态模式对话框完全加载后如何运行javascript

标签 javascript jsf primefaces

我有一个模式对话框,当用户单击按钮时会打开该对话框。它必须是动态的。它有很多来自外部来源的图像,例如<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的内容由 p:dataGrid 填充从 DB 获取 HTML 代码片段。其中一些代码是 <img ...所以理论上我无法改变它们

谢谢

最佳答案

我找到了一个可以帮助我的插件:waitForImages jQuery plugin

$('selector').waitForImages(function() {
    alert('All images are loaded.');
});

关于javascript - 动态模式对话框完全加载后如何运行javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38043146/

相关文章:

java - JSF/RichFaces - 如何以编程方式从 HtmlAjaxSupport 调用 ActionEvent (a4j :support)

javascript - 当用户将手指移到文档上时移动图像

ajax - 我可以从 <p :ajax event=select listner=method1, method2> 调用多个方法吗?

javascript - 无法在 JavaScript 中启用按钮

javascript - 通过 h :selectOneMenu 打开 URL

css - 隐藏 primefaces 子表的空标题

jsf - 使用工具提示按钮输入 primefaces

jsf-2 - 行编辑在数据表primefaces中不起作用

javascript - AngularJS 注入(inject)器问题

javascript - react .js : Wrapping one component into another