【发布时间】:2011-01-11 19:50:11
【问题描述】:
我在一个文档中运行了一个脚本,该文档可能嵌套在 iframe 中,也可能不嵌套。已经解决了检测嵌套的问题,但是不知道当DOM是iframe时如何检测DOM的就绪状态。
这是我已经拥有的:
if (window.self !== window.top) {
// is nested
// DOM ready test here
// execute code here
} else {
// is not nested
$(document).ready(function() {
// execute code here
});
}
我已经阅读了this post,但我没有看到具体问题的答案。我可能对那里的解决方案有误解,请随时纠正我。
编辑: 这似乎是一个 Fancybox 问题。这段代码:
alert(document.getElementById('username').className);
document.getElementById('username').focus();
我看到一个值正确的警报,但表单元素没有获得焦点。这告诉我检测 DOM 的就绪状态不是问题。我尝试使用的原始脚本是这样的:
$(document).ready(function() {
$('input.focus:last').focus();
});
编辑 2/解决方案: 我不得不求助于 Fancybox 特定的解决方案,因为它似乎是 Fancybox 特定的问题。我在这些 Fancybox iframed 表单的配置中添加了这一行:
'onComplete':function(){$('input.focus:last').focus();}
【问题讨论】:
-
如果您在嵌套时也使用 ready 函数,它应该可以工作...
-
$(document).ready(function() 在我的 iframe 中不起作用。这个特定的 iframe 是由 Fancybox 动态生成的。不过,我想要一个不特定于 Fancybox 的解决方案。跨度>
标签: javascript jquery dom iframe fancybox