简单的问题(如标题所述):jQuery.ready()
在使用时有效iframe.contentDocument
吗?
还有一个复杂的问题:
我必须在 CMS 的输入字段上挂上一个 keyup 事件,因此我无法控制 HTML,只能控制脚本。
输入位于嵌套在另一个 iframe 中的 iframe 内,因此有一个顶部窗口(浏览器窗口)、一个 iframe(我们称之为 iframe1)和其中的另一个 iframe(我们称之为一个 iframe2)。脚本和 jQuery 位于<head>
顶部窗口的部分。
我不是很喜欢setTimeout/setInterval
,所以我最初的想法是这样使用jQuery.ready()
(我省略了选择 iframe 的代码):
$(document).ready(function(){
$(iframe1.contentDocument).ready(function(){
$(iframe2.contentDocument).ready(function(){
$("input").keyup(function(){ /* Do stuff */ });
});
});
});
问题是,当.ready()
iframe1 触发时,我可以检查iframe1.contentDocument.body.innerHTML
它,结果是一个空字符串。不是人们所期望的。因此,代码无法绑定 keyup 事件。
如果有人在想“您使用的是正确的选择器上下文吗?”:是的,我正在选择正确文档中的 iframe 元素(尽管上面的代码片段可能无法完全说明这一点,因为我想保持简单)。也没有任何同源策略问题 - 所有 iframe 和父窗口都在同一个域上。
使用$(window).load()
似乎可以工作,但等待加载图像等的等待时间太长了,这对于应用程序来说是不可接受的。
是否可以实现jQuery.ready()
无需使用即可在 iframe 上运行的功能jQuery.load()
?