淘宝首页代码调整
来源:陈成的博客 发布时间:2011-04-22 12:44:00
1. 吊顶下拉菜单的键盘可用性改进
无障碍访问貌似最近比较火,大家都在聊,其中一块就是键盘的可访问性。我们在首页上作了些调整,让用户可以通过键盘访问到下拉菜单里的内容,希望小小的改进能够帮助到一些人。
实现方式不多解释,具体见代码:
var S = KISSY, DOM = S.DOM, Event = S.Event;var siteNav = DOM.get('#site-nav');var ulEl = DOM.get('#site-nav-bd ul');var linkEls = DOM.query('a', ulEl);var liEls = ul.getElementsByTagName('li');var menuEls = DOM.query('div.menu', ulEl);var searchLiEl = DOM.get('li.search', ulEl);var searchHdEl = DOM.get('span.menu-hd', searchLiEl);searchHdEl.setAttribute('tabIndex', 0);linkEls.push(searchHdEl);linkEls.push(DOM.get('header.top-header').getElementsByTagName('a')[0]);Event.on(linkEls, 'focus', function() { var li = DOM.parent(this, 'li'); DOM.removeClass(liEls, 'hover'); DOM.addClass(li, 'hover'); if (DOM.hasClass(li, 'services') && DOM.html('#J_ServicesContainer') === '') { KISSY.getScript('http://www.taobao.com/index_inc/2010c/includes/get-services.php?cb=__services_results'); }});Event.on(menuEls, 'mouseleave', function() { DOM.removeClass(liEls, 'hover');}); Event.on(document.body, 'click', function() { DOM.removeClass(liEls, 'hover');});
PS: 国外很多站点都作了类似处理:比如 Mozilla、Google,但国内好像不多见。
2. Flash 嵌入方法调整
源于小马提的一个 bug 反馈:在 IE 下没装 Flash 控件时,页面会出现大片空白。
乔花 MM 分析原因,反复测试后发现:
没装 Flash 和装了 Flash 后禁用 Flash 的表现是不一致的,后者不会出现 bug 里描述的问题
没装 Flash 时,如果用下面这种古老的 Flash 嵌入方法,浏览器会去请求 codebase 指定的地址,完了提示你安装 Flash
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="90" height="40"> <param name="movie" value="/file/UploadPic/20114/22/t1ovv6xbxkxxxxxxxx-62.swf"> <param name="wmode" value="transparent"> <embed wmode="transparent" src="https://img.aspxhome.com/file/UploadPic/20114/22/t1ovv6xbxkxxxxxxxx-62.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" width="90" height="40" type="application/x-shockwave-flash" wmode="transparent"/></object>
如果 object 对象后跟一个内联脚本,则会阻塞后续资源的渲染和下载,直到 codebase 的请求完成。很悲剧,首页就这种情况;更悲剧的是,download.macromedia.com 的请求返回很慢 ...
解决方式是换一种 Flash 嵌入方式,比如:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="90" height="40" class="holiday-logo"> <param name="movie" value="/file/UploadPic/20114/22/t1ovv6xbxkxxxxxxxx-62.swf"> <param name="wmode" value="transparent"> <!--[if !IE]>--> <object type="application/x-shockwave-flash" data="/file/UploadPic/20114/22/t1ovv6xbxkxxxxxxxx-62.swf" width="90" height="40"> <param name="wmode" value="transparent"> </object> <!--<![endif]--></object>
最后附上各种情况的测试页面:阻塞(问题页面),不阻塞(问题已解决)。测试时请注意要:IE浏览器、卸载Flash和清空缓存。


猜你喜欢
- MySQL去重的方法整理【初级】有极少的重复行使用distinct查出来,然后手动一行一行删除。【中级】按照单个字段的重复去重例如:对id字
- 一、概念我们可以将工作池理解为线程池。线程池的创建和销毁非常消耗资源,所以专门写一个pool,每次用过的线程池再放回pool中而不是销毁。不
- 如下所示:代码如下:<table style="width: 100%" class="myTable&
- 引用计数Python语言默认采用的垃圾收集机制是『引用计数法 Reference Counting』,该算法最早George E. Coll
- 怎样产生10个不同的随机数python产生10个不同随机数的方法:首先创建一个result的结果空列表;然后循环直到result的长度超过1
- Microsoft JET Database Engine 错误 '80040e2
- 文本如图:Python:import sysresult=[]with open('accounts.txt','r
- 最近,小明为了达成小姐姐的愿望,在某宝买到心仪的宝贝,再加上又迷上了python,就通过python轻而易举地实现了(个人声明:对Java来
- 1、plt.legendplt.legend(loc=0)#显示图例的位置,自适应方式说明:'best' :
- 前言python作为一门脚本语言,其好处是语法简单,很多东西都已经封装好了,直接拿过来用就行,所以实现同样一个功能,用Python写要比用C
- python内置模块collections介绍collections是Python内建的一个集合模块,提供了许多有用的集合类。1、named
- 写出能用的代码很简单,写出好用的代码很难。好用的代码,也都会遵循一此原则,这就是设计原则,它们分别是:单一职责原则 (SRP)开闭原则 (O
- import matplotlib.pyplot as plt #plt用于显示图片import matplotlib.image as m
- 例子是输出九九乘法表如果按照如下程序写:# 输出九九乘法表 for i in range(10): for j in range
- 前言文件和目录操作是很常见的功能,这里做个简单的总结,包括注意事项和实际的实现代码,基本日常开发都够用了目录操作判断目录或是文件是否存在os
- 生成txt文件:mesg = "hello world"with open("test.txt",
- 前言在对着产品高举中指怒发心中之愤后,真正能够解决问题的是自身上的改变,有句话说的好:你虽然改变不了全世界,但是你有机会改变你自己。秉承着“
- 首先让我们看下 YUI 是如何处理的:var toObject = function(a) { var o = {
- 如下所示:import pandas as pdfile = pd.read_csv('file.csv',iterator
- 经常需要通过python代码来提取文本的关键词,用于文本分析。而实际应用中文本量又是大量的数据,如果使用单进程的话,效率会比较低,因此可以考