2012-04-02 61 views
3

我最近實現了qTip jQuery插件,我非常喜歡它。在最近與我的老闆進行代碼審查時,Web Accessibility出現在討論中,並且特別提到qTip。Web Accessibility和qTip

目前我有qTip工作,當我懸停在啓用qTip的網頁上的某些圖標時,會顯示一個工具提示給用戶。那麼,這對於使用鼠標的人來說非常有用,但對於那些只使用鍵盤的人來說,這是行不通的...

我已經開始對Web輔助功能進行一些研究,並閱讀了材料主要在W3C

我正在做的是啓用qTip的鍵盤/屏幕閱讀器功能。

你們有沒有做任何使qTip與Web Accessibility兼容的工作?

我是絕對不是尋找「有人寫代碼」在這裏。只需查找小例子和任何有關使用qTip插件實現Web輔助功能的建議。

+1

所以,這聽起來像你想要兩件事:1)能夠通過鍵盤焦點觸發qtips; 2)確保顯示在qtip中的內容可供屏幕閱讀器訪問。這是正確的嗎?有一點需要注意的是,qtip的默認行爲是從'title'屬性中提取內容,[這是不容易訪問的](http://www.paciellogroup.com/blog/2010/11/using-the -html所有權屬性/)。如果你使用'@ title',你會想把它改成更一致的東西。 – steveax 2012-04-02 16:17:29

+0

@steveax - 正確處理這兩件事情。在創建qTip時,'title'屬性是否與qTip'content'標識符相對應?關於如何讓屏幕閱讀器可以訪問內容的任何想法?謝謝。 – 2012-04-02 16:22:53

回答

7

我會做這些方針的東西...

添加你想要的內容在qTip HTML標記(而不是在title屬性):

<p> 
<a href="#"> 
    <span class="hidden">This is the qtip content</span> 
    And this is the link content 
</a> 
</p> 

隱藏qTip含量CSS(甚至更好的辦法是使用類似modernizr只隱藏的內容,如果用戶已啓用瀏覽,:對於選擇.js .hidden):

.hidden { 
    position: absolute; 
    display: block; 
    top: -10000px; 
    left: -10000px; 
    font-size: 1px; 
} 

然後包括jQuery和的qTip腳本,使用的qTip內容隱藏的內容創建qTips並添加focusinfocusout事件顯示/後隱藏qTip:

$('a').qtip({ 
    content: { 
     text: function(api) { 
     return $(this).children('.hidden').text(); 
     } 
    } 
}); 

$(document).ready(function(){ 
    $('a').focusin(function() { 
     $(this).qtip('toggle', true); 
    }); 
    $('a').focusout(function() { 
     $(this).qtip('toggle', false); 
    }); 
}); 

小提琴:http://jsfiddle.net/MnB6Q/

+0

很好的回答。我知道該物品的標籤會觸發焦點事件,它是否也會觸發懸停? – stringy 2012-04-03 09:11:33

+0

@stringy是的,嘗試小提琴。 – steveax 2012-04-03 16:03:08

+0

focusin和focusout正在爲我的鼠標,但不與鍵盤一起工作。我正在使用IE 8。 – 2012-04-03 20:35:28