javascript加载事件执行序列

时间:2011-04-12 19:29:34

标签: jquery firefox javascript-events

我有以下代码。

//create a tab and active it
var tab = gBrowser.addTab("chrome://xxx/content/html/xxx.html");
gBrowser.selectedTab = tab
var newTabBrowser = gBrowser.getBrowserForTab(gBrowser.selectedTab);
newTabBrowser.addEventListener("load", function () {
    //event 1.          
    }, true);

其中xxx.html有


$(document).ready(function(){
        //event 2
});
$(window).load(function(){
    //event 3
});

我知道事件2在事件3之前被触发。 并且事件1在事件3之前通过发出警报()被触发,任何人都可以解释我的原因。或者1和3的序列是不可预测的。感谢。

2 个答案:

答案 0 :(得分:0)

不完全确定事件1到底是什么 - 我猜这是一个Firefox插件,所以它实际上是在标签本身加载时触发而不是文件里面的文件。

一旦完整的HTML DOM准备好,但在加载所有外部资源(例如图像和样式表)之前,事件2将立即触发。事件3仅在所有外部资源都已完成加载时触发。

答案 1 :(得分:0)

面向对象或由其性质驱动的事件不一定是顺序的。

$(document).ready()表示页面完全就绪,然后继续进行。

$(window).load(function()表示页面正在被渲染。

我预计“准备好继续进行”是在“页面处于呈现过程中”之前,至少在下一个版本的浏览器之前。但我不建议将代码视为序列。

在焦点位于第一个标签页上以及焦点位于第二个标签页之后,查看事件3之前是否会触发事件1可能会很有趣。