我动态创建iframe,以用作执行基于表单的API调用的位置。
$('<iframe>').attr({
name : "secret_sending_iframe",
src : "#",
style : "visibility:hidden; width:0px; height:0px;"
}).appendTo("#recordingControl");
这有副作用导致我的$(document).ready()再次触发。这是可以理解的,因为它告诉我我的iframe已经准备就绪,但现在我需要将初始文档准备好与准备好的新文档区分开来。是否有一些方法可以告诉你,除了测试iframe的负面存在以告诉它是第一次调用.ready()之外,iframe是否已经准备就绪?
BTW - 在$(document).ready()调用中测试$(“iframe”)返回[],这是我没想到的。所以对我来说最好的解决方案是使用window.location.href,见下文......
答案 0 :(得分:3)
每个框架都有自己独立的javascript上下文,它是独立的$(document).ready()
。所以,除非您在同一文档中多次调用$(document).ready()
,否则我认为您不会多次调用相同的$(document).ready()
。否则,每次调用它都会是一个不同的文件。
如果你有相同的代码并且你需要知道正在调用哪一个,你可以随时查看window.location
对象以查看你所在的页面/框架。要了解你的情况,我会建议将其添加到每个人:
console.log(window.location.href);
然后,你可以分出哪个是哪个。
答案 1 :(得分:0)
解决这个问题的常用方法是在$(document).ready()函数之前在JS中设置一个全局变量,并在其中测试它:
var run_doc_ready = 0;
$(document).ready(function(){
...
if (!run_doc_ready) {
...
run_doc_ready = 1;
}
...
});