jQuery对话框iframe在IE中加载一次,在其他浏览器加载两次?

And*_*ott 5 iframe jquery jquery-ui

我有一个jQuery对话框,其内容由iframe定义.在显示对话框之前,此iframe的内容是不可见的.在IE中,这个内容及其相关的javascript正在执行,因此当显示对话框时,很明显javascript已经完成了所有的加载工作.但是在像Firefox和Chrome这样的非IE浏览器中,这个iframe再次在对话框可见之前执行其javascript,但是当显示对话框时显然会重新执行它.

因为这是一个相当昂贵的iframe(使用ajax调用执行大量的javascript),我不希望浏览器支付初始化两次的费用.事实上,我可能会说我想延迟初始化它,直到对话框实际出现.但是它是否在它出现之前初始化然后保留初始化(正如IE正在做的那样)或它只是延迟初始化直到对话框可见,我可以解决.

我不能满足的是我现在看到的,非IE浏览器初始化两次,第一次是完全浪费,因为它们在对话框出现时重新初始化.

我指的页面:http://openidux.dotnetopenauth.net/.您可以通过单击右上角的"登录"链接来重现行为.

谢谢.

And*_*ott 7

我最初将iframe.src属性设置为"about:blank",并且仅在对话框实际弹出时设置源.然后,为了避免在对话框隐藏时重新加载(愚蠢,我知道),我将其重新设置为about:blank.

$(document).ready(function() {
    $("#loginDialog").dialog({
        close: function(event, ui) {
            // Clear the URL so Chrome/Firefox don't refresh the iframe when it's hidden.
            iframe.src = "about:blank";
        },
        open: function(event, ui) {
            iframe.src = loginContent;
        },
    });
});
Run Code Online (Sandbox Code Playgroud)