文档中的Javascript执行访问点
我想知道,脚本解释从一个带有iframe的文档开始,该文档包含另一个带有文档中的Javascript执行访问点,javascript,interpreter,Javascript,Interpreter,我想知道,脚本解释从一个带有iframe的文档开始,该文档包含另一个带有“的文档,或者可能是”。我只需要确保执行发生在iframe文档之前的“外部”文档中,但它似乎是随机的,对吗 顺便问一下,被引用的Java脚本的解释顺序如何?它是否取决于我引用的文档中的“何处” 我只需要确保执行发生在iframe文档之前的“外部”文档中 要100%确定地执行此操作,您必须在外部文档的DOMReady事件中创建iframe(例如,使用jQuery的.ready())。如果您将其直接嵌入到文档中,那么确实无法保证
“
的文档,或者可能是”
。我只需要确保执行发生在iframe文档之前的“外部”文档中,但它似乎是随机的,对吗
顺便问一下,被引用的Java脚本的解释顺序如何?它是否取决于我引用的文档中的“何处”
我只需要确保执行发生在iframe文档之前的“外部”文档中
要100%确定地执行此操作,您必须在外部文档的DOMReady
事件中创建iframe(例如,使用jQuery的.ready()
)。如果您将其直接嵌入到文档中,那么确实无法保证脚本何时执行
引用的Java脚本的解释顺序如何?它是否取决于我引用的文档中的“何处”
是的,脚本块按照它们在页面中的顺序执行。关于这个问题,这里有一个很好的答案:这实际上取决于如何注入Javascript(在父文档和
中)以及在哪里注入它
例如,如果在父文档中使用动态脚本插入,但在iframe代码中使用阻塞
标记,则可能首先执行iframe脚本
如果将
标记放在父文档的底部,而将
标记放在上面的某个位置,则可能会出现陷阱
因此,一般来说,如果在父文档中实际创建
之前使用blocking
标记,则应首先执行此“”。但是,尖端浏览器会再次尝试以并行模式加载这些脚本,这也可能导致错误的行为
您应该在父文档中的
DOMContentLoaded
或onload
窗口事件上动态创建
。我确信的是,iframe头部分中的阻塞标记会在父文档中任何位置的任何阻塞标记之前执行,无论在何处。至少在所有的chrome和firefox中。。。我很惊讶这种行为没有标准的定义,所以浏览器可以坚持使用它,但让我恼火的是,在从父文档的标题部分插入脚本之前执行iframe元素的阻塞…这是非常丑陋的行为,我可以从iframe中引用父窗口函数并确保安全吗?parent.getWordCount()。如果执行在iframe中开始,并且将有一个对全局函数的函数引用,该函数在父函数中声明,稍后将执行,它是“未定义”还是解释器会另外找到它?@Iisak如果您以后不动态加载脚本,您应该可以这样做:父文档中的所有函数都应该在iframe中可用。