我有一个 jQuery 对话框,其内容由 iframe 定义。在显示对话框之前,此 iframe 的内容是不可见的。在 IE 中,该内容及其关联的 javascript 正在执行,因此当显示对话框时,很明显 javascript 已经完成了所有加载工作。但在 Firefox 和 Chrome 等非 IE 浏览器中,这个 iframe 再次在对话框可见之前执行其 javascript,但随后显然re- 显示对话框时执行它。
因为这是一个创建起来相当昂贵的 iframe(许多 javascript 通过 ajax 调用等执行),所以我不希望浏览器支付两次初始化它的成本。事实上,我可能会说我想延迟初始化它,直到对话框实际出现。但是,无论它在启动之前进行初始化,然后保留该初始化(如 IE 所做的那样),还是只是延迟初始化直到对话框可见,我都可以选择其中之一。
我不能满足的是我现在所看到的,非 IE 浏览器初始化两次,第一次完全是浪费,因为它们在对话框出现时重新初始化。
我所指的页面:http://openidux.dotnetopenauth.net/ http://openidux.dotnetopenauth.net/。您可以通过单击右上角的登录链接来重现该行为。
Thanks.
我最终将 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;
},
});
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)