多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 盲人站長深惡痛絕的onfocus=”this.blur()”

盲人站長深惡痛絕的onfocus=”this.blur()”

來源:程序員人生   發布時間:2013-11-07 14:27:52 閱讀次數:2597次

杭州最美的季節里,淘寶無障礙訪問改善小組有幸邀請到盲人在線站長——爭渡讀屏團隊成員——楊永全同學和我們一起面對面交流網站無障礙訪問方面的問題。楊同學使用電腦必須使用讀屏軟件,就像他看不到我們的臉必須靠聲音識別我們一樣。在談到讀屏軟件操作頁面時,他對我們前端的同學特別的強調:他最深惡痛絕的就是頁面鏈接上有 onfocus=”this.blur()” 這句代碼,這從何說起呢?

各種瀏覽器虛線框差異圖

(圖一)

各位同學,看到這句代碼有沒有覺得眼熟,對的,你懂的,我們常用它來去除鏈接取得焦點時外圍出現的虛線框(如上圖一),google一下,前面幾十頁談的都是這個去除虛線框的技巧。但我們也許以前從未想過:我們的這行代碼給盲人用戶們帶來了巨大的困擾:這中斷了盲人用戶的Tab鍵路徑,導致Tab光標無法聚焦頁面的下一個控制器(鏈接、表單域、object、image map等)。測試如下:

<body>
<a href=”#” >第一個鏈接</a>
<a href=”#” >第二個鏈接</a>
<a href=”#” onfocus=”this.blur();”>第三個鏈接</a>
<a href=”#” >第四個鏈接</a>
<a href=”#” >第五個鏈接</a>
<a href=”#” >第六個鏈接</a>
</body>

按下Tab鍵,第一和第二個鏈接都可以正常獲取焦點,繼續Tab到第三個鏈接時,悲劇出現了:此時焦點會回到第一個鏈接,而無法Focus到第四個鏈接,原因是當Focus到第三個鏈接時,onfocus=”this.blur()” 事件處理強制觸發了失焦,焦點重新回到文檔的最開始。于是不停按Tab的結果就是焦點在前面三個鏈接輪流轉,后面的內容通過Tab鍵無法訪問[1]。

虛線框影響視覺效果 (圖二)

那么,有更好的方式嗎?從根源上看,加onfocus=”this.blur()”是為了去除鏈接獲取焦點后外圍的虛線框(當然chrome、safari、opera下的focus效果各異,這里姑且就這么叫吧 )。W3C關于Outline的文章里說明這個虛線框用來告訴用戶當前頁面獲取焦點的元素。我覺得,虛線框的存在有它的合理性,但有時你也許無法回避某些”視覺潔癖”需求(如圖二:虛線框使“商品”背景和下面的紅色色塊分隔開了),以下總結了去掉虛線框的幾種常用方法:

去除虛線框的方法 優劣 兼容性 是否中斷tab
<a href=”#” onfocus=”this.blur()”>this blur</a> 鏈接聚焦觸發時失去焦點,js和html耦合在一起 沒有兼容性問題
a:focus {outline:none}或
a{outline:none}
outline由css2.1引入,去除虛線框視覺上的問題正是css的職責 ie6/ie7不支持,ie8+/ff /safari/opera[2]支持
<a href=”#” hidefocus=”true” >hidefocus</a> 該屬性是ie的私有屬性[3] ie5+支持
a { noFocusLine: expression(this.onFocus = this.blur())} 可批量處理,但expression的性能問題不能忽視 expression ie6/7支持,ie8+、非ie不支持

綜合以上,去除鏈接虛線框的推薦方法是:ie下用hidefocus屬性,ff/chorme/opera/safari下用outline:none。即:

<a href=”#” hidefocus=”true” >鏈接</a>
a:focus {
    outline:none;
}

楊永全同學無奈地說,如果頁面因為onfocus=”this.blur()”導致tab無法訪問頁面全部內容,爭渡讀屏軟件在讀取頁面之前會強制過濾掉這個屬性,但是如果用戶是在js里面動態觸發this.blur(),讀屏軟件又要出新招來克制了。這無疑增加了讀屏軟件的開發工作量,為了讓盲人用戶們能更順暢的訪問我們的網站,盡量避免使用onfocus=”this.blur()”哦。

注釋

[1]Safari默認情況下,按tab鍵是不會focus鏈接的,但會focus表單域,在偏好設置-高級勾選“按下tab以高亮顯示網頁上的每一項”可開啟該功能。Opera比較特殊,它通過shift+上下左右方向鍵可以向上下左右focus頁面焦點。

[2]在Opera下點擊鏈接(focus和active狀態)時都不會出現所謂的虛線框,所以Opera下鏈接的虛線框問題可以不計。 Opera 通過shift+上下左右鍵產生的線框通過outline:none并不能去除,但是Opera支持outline這個屬性。

[3]hidefocus屬性是ie的私有屬性,雖然hidefocus屬性有true or false兩個值,但測試結果是ie5-ie9不管其值為true or false, 只要添加hidefocus屬性,該鏈接都會失去虛線框。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 激情综合五月天丁香婷婷 | 伊人网络| 国产成人精品男人免费 | 农村女人的一级毛片 | 一级做a爱免费观看视频 | 亚洲小视频 | 国产精品视频网 | 新武则天一级淫片免费放 | 亚洲资源站资源网在线 | 亚洲性影院 | 免费在线观看www | 国内精品不卡一区二区三区 | 亚洲 欧美 另类 综合 日韩 | 九色精品在线 | 亚洲永久免费网站 | 性欧美精品xxxx | 日本欧美一区二区三区免费不卡 | 欧美一级aa免费毛片 | 日韩 亚洲 中文 图片 小说 | 老司机午夜精品视频在线观看免费 | 中国漂亮护士一级毛片 | 久久精品国产免费中文 | 亚洲第一网站免费视频 | 91福利一区二区在线观看 | xxxx欧美69免费 | 亚洲一区二区免费视频 | 日韩欧美一区二区三区在线视频 | 日本成人在线播放 | 欧美非洲黑人性xxxx | 国产精品日产三级在线观看 | 日本高清网 | 国产在线精品一区二区高清不卡 | 亚洲第一免费 | 欧洲美女性做爰 | 欧美综合图区亚欧综合图区 | 免费澳门一级毛片 | www.在线免费观看 | 亚洲国产一区二区在线 | 国产福利在线播放 | 2020国产精品永久在线观看 | 在线爱爱 |