《Ext JS权威指南》——2.5节关于Ext.BLANK_IMAGE_URL

2.5 关于Ext.BLANK_IMAGE_URL
在Ext-more.js文件中可找到BLANK_IMAGE_URL属性的默认值和定义。其默认值是:

BLANK_IMAGE_URL : 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='
定义是:
BLANK_IMAGE_URL : (isIE6 || isIE7) ? 'http:/' + '/www.sencha.com/s.gif' : 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='

代码中以“data”开头的数据代表一个1*1像素的空白透明图片。因为IE 6和IE 8不支持这样格式的图片数据,所以必须为它指定一个图片路径,默认指向http:///www.sencha.com/s.gif。
这个图片有什么用呢?在菜单项的源代码(Item.js)中可找到菜单项的渲染模版代码:

renderTpl: [
  '<tpl if="plain">',
      '{text}',
  '</tpl>',
  '<tpl if="!plain">',
      '<a class="' + Ext.baseCSSPrefix + 'menu-item-link" href="{href}" <tpl if="hrefTarget">target="{hrefTarget}"</tpl> hidefocus="true" unselectable="on">',
          '<img src="{icon}" class="' + Ext.baseCSSPrefix + 'menu-item-icon {iconCls}" />',
          '<span class="' + Ext.baseCSSPrefix + 'menu-item-text" <tpl if="menu">style="margin-right: 17px;"</tpl> >{text}</span>',
          '<tpl if="menu">',
              '<img src="' + Ext.BLANK_IMAGE_URL + '" class="' + Ext.baseCSSPrefix + 'menu-item-arrow" />',
          '</tpl>',
      '</a>',
  '</tpl>'
],

在上面的代码中,Ext.BLANK_IMAGE_URL被用作显示图片。哈哈,有点想不通为什么用1个1*1像素的空白图片来作显示图片吧。别着急,看看它的CSS代码就清楚了。在ext-all-debug.css文件可找到有关“menu-item-arrow”的代码:

.x-menu-item-arrow {
  position: absolute;
  width: 12px;
  height: 9px;
  top: 9px;
  right: 0px;
  background: url('../themes/images/default/menu/menu-parent.gif') no-repeat center center;
}

真相出来了,Ext.BLANK_IMAGE_URL只是一个占位符,目的是显示背景图片。这样做主要有以下两个目的:
在更换主题时如果图片是固定的,有两种方法更新图片,一种是覆盖旧图片,一种是重新定义图片路径。在你固定主题的情况下,覆盖图片的方法是可行的,但如果要由用户自定义主题就不行了。重新定义图片的方法不但增加开发人员工作量,而且也不能实现用户自定义主题功能。使用这种方法,只需要在CSS中指定背景图片就行了,既不需要覆盖图片,也不需要去重新定义图片路径,非常方便实用。
如果使用div标记或span标记代替img标记,那么在这两个标记外增加链接的时候,因为标记内的内容为空,所以链接就会出现问题。如果在div或span内加入空格呢?问题依旧一样,而且还会因为空格造成背景图片难于定位。有兴趣的可以自己做一下测试。
明白了Ext.BLANK_IMAGE_URL的作用,回头再研究一下2.3节的示例中有关Ext.BLANK_ IMAGE_URL的三行代码。因为当浏览器是IE 6或IE 7时,图片地址会指向http:///www.sencha.com/s.gif,如果访问不了Sencha网站,就会出现显示问题,所以需要将地址指向本地地址。如果不是IE 6或IE 7,那么使用默认值就可以了。

时间: 2024-11-01 13:31:44

《Ext JS权威指南》——2.5节关于Ext.BLANK_IMAGE_URL的相关文章

《Ext JS权威指南》——第1章,第1.0节Ext JS 4开发入门

第1章 Ext JS 4开发入门在这一章,我们将介绍一些与Ext JS有关的基础知识以及Ext JS 4的一些主要变化.从2008年接触Ext JS到现在,不少初学者咨询过我,应该怎样才能学好Ext JS?这是一个很好的问题,每个人的学习方法不同,在学习Ext JS之前的基础都不同,因而如何学好Ext JS因人而异.不过Ext JS始终是一个JavaScript的框架,有其局限性,掌握了Javascript.HTML和CSS等知识,再加上掌握Ext JS的框架结构,就足够应付Ext JS的学习了

《Ext JS权威指南》——导读

目 录 前 言第1章 Ext JS 4开发入门1.1 学习Ext JS必需的基础知识 1.2 JSON概述 1.3 Ext JS 4概述1.4 Ext JS的开发工具的获取.安装与配置介绍 1.5 如何获得帮助 1.6 本章小结 第2章 从"Hello World"开始 2.1 获取Ext JS 42.2 配置使用Ext JS库 2.3 编写"Hello World"程序 2.4 关于Ext.onReady2.5 关于Ext.BLANK_IMAGE_URL2.6 关

《Ext JS权威指南》——1.6节本章小结

1.6 本章小结本章主要介绍了学习Ext JS需要掌握的知识并对Ext JS 4进行了简单介绍,和大家分享了一些笔者学习Ext JS的经验,为下一章开始进入Ext JS奠定基础.在进入下一章之前,笔者建议大家架设好本地在线API文档,以便随时查阅.

《Ext JS权威指南》——1.1节学习Ext JS必需的基础知识

1.1 学习Ext JS必需的基础知识 1. JavaScript 嗯,这个还用说吗?Ext JS本来就是一个JavaScript的框架,而且使用Ext JS就需要使用JavaScript语法来开发,需要JavaScript的知识是必然的了.问题的关键是,开发人员对JavaScript知识的掌握也有深浅之分.譬如,我碰到一些开发人员,对JavaScript算是很熟悉了,但是不会JSON,不会直接使用JSON对象,在使用Ext JS的过程中,需要使用JSON对象的时候,居然是通过组装字符串的方式,

《Ext JS权威指南》——2.7节Ext JS 4语法

2.7 Ext JS 4语法 1.配置对象 Ext JS的基本语法就是使用树状的配置对象来定义界面,其格式如下: { config_options1:value1, config_options1:value2, - config_optionsn:valuen, layout:{}, items:[ {},//配置对象 {}//配置对象 - ], listeners:{ //定义事件(根据需要而定) click:function(){}, dblclick:function(){} - } }

《Ext JS权威指南》——1.5节如何获得帮助

1.5 如何获得帮助学习和使用Ext JS或多或少都会遇到一时难以解决的问题,这时候就需要寻求帮助.寻求帮助的方法如下.在线API文档:笔者认为,要提高自己的编程水平,很重要的一点就是经常看和查API文档.很多初学者习惯碰到问题就去论坛或者QQ群问人,这实在不是一个好的办法,因为缺乏思考过程.笔者认为,看API绝对可以提高你解决问题和寻找解决问题的能力,因为看和找的过程就是一个学习的过程.而去问人的过程,基本是一个复制过程,至于为什么要这样?为什么会这样?完全会被忽略.新的API还包含了不少使用

《Ext JS权威指南》——2.2节配置使用Ext JS库

2.2 配置使用Ext JS库要使用Ext JS,首先要做的是将Ext JS包里的resources目录.bootstrap.js文件.ext-all.js文件和ext-all-debug.js文件复制到项目目录.接着在页面中head标记部分添加CSS和脚本文件的引用: <link rel="stylesheet" type="text/css" href="path/resources/css/ext-all.css"/> <

《Ext JS权威指南》——1.2节JSON概述

1.2 JSON概述 1.2.1 认识JSON XML虽好,可作为数据交换格式,有时会喧宾夺主,标记比数据还多,徒增流量.更重要的是,在JavaScript中处理XML实在太不便利了.而JSON,没有附加的标记,在JavaScript中可作为对象处理,因而渐渐成了目前Web开发的标准数据交互格式.JSON的英文全称是"JavaScript Object Notation",意思就是JavaScript对象表示法.它是一种基于文本的.独立于语言的轻量级数据交换格式.它来源于ECMA-26

《Ext JS权威指南》——1.4节Ext JS的开发工具的获取、安装与配置介绍

1.4 Ext JS的开发工具的获取.安装与配置介绍 1.4.1 Ext DesignerExt Designer是一个所见即所得的创建Ext JS界面的工具软件,目前版本是1.2版,支持Ext JS 3.x和4.x版本,可在http://www.sencha.com/products/designer/download/下载试用版本. 安装双击下载文件将看到如图1-6所示的语言选择窗口. 选择简体中文后,单击"OK"按钮后将看到如图1-7所示的设定窗口. 单击"前进&quo

《Ext JS权威指南》——2.9节为本书示例准备一个模板

2.9 为本书示例准备一个模板 为了便于示例的讲解,特意准备了这个模板.在没有特殊说明的情况下,本书后续的示例都会在此模板的基础上添加额外代码,该模板的代码将不会出现在示例的代码清单里. 新建一个Templates.html文件,加入如代码清单2-2所示的代码. 代码清单2-2 模板代码清单 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd&q