Ext.onReady 这个函数我想是最常用的函数了吧,毕竟没有 ready 前什么也不可以做的。
onReady的参数是一个函数 。
其实真正的调用是
Ext.onReady = Ext.EventManager.onDocumentReady;
而 Ext.EventManager 则是一个管理事件的对象,而且是单例的,为啥不做成静态呢,应该是为了不暴露里面的 private 函数喽,这也是对
传统语言private函数的一个实现
。
Ext.EventManager = funtion() {
//private or privileged
function xx(){
};
var pub ={
//可以调用xx
};
//.....
return pub;
}();
而 onDocumentReady 则是将他的参数加入到一个自定义事件的 listener 列表中去了,关于自定义事件以及事件监听器如何排队,如何触发监听器暂时不分析了。可这个 event 怎么来的呢,正是在 onDocumentReady 初始的
onDocumentReady:function(f){
//页面加载好就直接触犯事件处理函数返回
//..
//页面没有加载好且自定义事件没有初始化,就初始化自定义事件
if(!docReadyEvent){
initDocReady();
}
//自定义事件有了,把事件处理函数添加到自定义事件的 listeners 列表,等待事件触发后批处理
}
在初始这个事件过程中,终于看到了我们熟悉的 onload
var initDocReady = function(){
//自定义事件,建立监听器队列
docReadyEvent = new Ext.util.Event();
//gecko内核,和opera利用那个DOMContentLoaded事件
if(Ext.isGecko || Ext.isOpera) {
document.addEventListener("DOMContentLoaded", fireDocReady, false);
}
//ie利用script的defer属性
else if(Ext.isIE){
document.write("<s"+'cript id="ie-deferred-loader" defer="defer" src="/'+'/:"></s'+"cript>");
var defer = document.getElementById("ie-deferred-loader");
defer.onreadystatechange = function(){
if(this.readyState == "complete"){
fireDocReady();
}
};
}
//safari没有办法?只能定时判断document,dom树的状态
else if(Ext.isSafari){
docReadyProcId = setInterval(function(){
var rs = document.readyState;
if(rs == "complete") {
fireDocReady();
}
}, 10);
}
//最坏情况,新浏览器??load 比上述事件先触发??
//fireDocReady 会判断如果已经触发过一次就不再处理了。
// no matter what, make sure it fires on load
E.on(window, "load", fireDocReady);
};
这样的话就实现了多个操作附加到了ext ready上面.
( 09年再读:ie 利用script defer属性 ,firefox监控domready事件,dom树加载完毕比window load事件要早得多,image标签加载需要时间的
)
页面加载判断与onload 研究
Defer And IE
javascript : defer execution
这样ext 屏蔽了浏览器差异 ,关键是ext使用了它的通用事件模型,从而整合到了一个统一的框架中
。
分享到:
相关推荐
代码如下: Ext.onReady(function() { Ext.Msg.alert(‘提示’, ‘逗号分隔参数列表’); //这种方式非常常见的 }); 效果图: 代码如下: Ext.onReady(function() { //定义 JSON(配置对象) var config = { ...
- `Ext.onReady`函数用于在DOM加载完成后执行代码,这里是创建`TreePanel`的合适时机。 - `Ext.BLANK_IMAGE_URL`通常用于设置占位符图片的URL,防止因图片未加载而出现的错误图标。 - `TreeLoader`对象用于从...
在上述代码中,`Ext.onReady`确保在DOM加载完成后再执行JavaScript代码。`Ext.Msg.show`用于创建消息对话框,`Ext.get`则用于根据ID获取DOM元素。`Ext.fly`函数类似,但它的设计目的是快速执行一次性的DOM操作,而不...
Ext.onReady(function() { var iframe = Ext.create('Ext.ux.IFrame', { src: 'http://example.com', plugins: ['miframe'] // 使用miframe插件 }); var panel = Ext.create('Ext.Panel', { items: [iframe]...
Ext.onReady(function() { var uploadDialog = new Ext.ux.UploadDialog({ title: '文件上传', url: '/server/upload.php', // 服务器端处理文件的URL width: 400, height: 300, listeners: { '...
接下来通过 `Ext.onReady` 函数确保 DOM 完全加载后执行代码。 ```javascript Ext.onReady(function() { //... }); ``` #### 三、数据模型与列模型配置 **数据模型** (`Store`) 负责数据的存储与管理,这里使用了...
它模仿了Ext.js库中的`Ext.onReady`功能,确保在页面DOM完全加载后执行指定的函数,即`GOOGLEResize`。 1. **IE的检测与处理**: 在IE浏览器中,代码通过检查`navigator.userAgent`来识别版本,并利用`...
**总结**:本节通过具体的步骤和示例,详细介绍了如何在EXT中创建一个简单的Hello World程序,并对`Ext.onReady`方法进行了深入解析。这不仅有助于理解EXT的基本使用方式,也为后续更复杂的应用打下了坚实的基础。
案例如下: 代码如下: Ext.onReady(function(){ Ext.MessageBox.alert(“提示”,”请单击我,确定”,callBack); function callBack(id){ alert(“单击的按钮ID是:”+id); } Ext.MessageBox....
上面的代码展示了如何使用`Ext.onReady()`来弹出一个警告框,告知用户Ext已经配置成功。 #### 五、Ext.Element对象:Ext的核心 `Ext.Element`是Ext 2.0的核心功能之一,提供了对DOM元素的强大操作能力。通过`Ext....
3. **初始化应用**: 使用 `Ext.onReady` 函数来确保 DOM 加载完成后再执行 JavaScript 代码。例如: ```html Ext.onReady(function() { Ext.MessageBox.alert("Hello World", "Hello World!"); }); ``` ###...
EXTJS 应用程序的启动通常从`Ext.onReady` 函数开始。这个函数会在DOM加载完成后执行,确保在操作DOM元素时页面已经完全准备就绪。例如,我们可以使用如下方式在页面加载完毕后弹出提示框: ```javascript Ext....
- 初始化应用:使用Ext.onReady或Ext.application启动应用。 5. EXT的响应式设计 EXT还支持响应式布局,可以根据不同设备和屏幕尺寸自动调整界面,适应移动设备和平板电脑,实现跨平台的Web应用开发。 6. 扩展与...
Ext.onReady(function(){ Ext.get('messageBox1').on('click', function(){ Ext.MessageBox.alert('状态', '成功'); }); }); ``` ##### 2. Ext.MessageBox.confirm() `Ext.MessageBox.confirm()` 方法用于...
Ext.onReady(function(){ var e = new Ext.Element("hello"); alert(Ext.get("hello")); // 使用ID获取 alert(Ext.get(document.getElementById("hello"))); // 使用DOM对象获取 alert(Ext.get(e)); // 使用...
2.4 关于ext.onready / 38 2.5 关于ext.blank_image_url / 40 2.6 关于字体 / 42 2.7 ext js 4语法 / 42 2.8 本地化 / 60 2.9 为本书示例准备一个模板 / 60 2.10 本章小结 / 61 第3章 调试工具及技巧 / 62 ...