我有以下代码。
//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的序列是不可预测的。感谢。
答案 0 :(得分:0)
不完全确定事件1到底是什么 - 我猜这是一个Firefox插件,所以它实际上是在标签本身加载时触发而不是文件里面的文件。
一旦完整的HTML DOM准备好,但在加载所有外部资源(例如图像和样式表)之前,事件2将立即触发。事件3仅在所有外部资源都已完成加载时触发。
答案 1 :(得分:0)
面向对象或由其性质驱动的事件不一定是顺序的。
$(document).ready()表示页面完全就绪,然后继续进行。
$(window).load(function()表示页面正在被渲染。
我预计“准备好继续进行”是在“页面处于呈现过程中”之前,至少在下一个版本的浏览器之前。但我不建议将代码视为序列。
在焦点位于第一个标签页上以及焦点位于第二个标签页之后,查看事件3之前是否会触发事件1可能会很有趣。