2012-10-19 18 views
0

假設我有一個鏈接,當單擊鏈接時會使整個頁面淡出。我淡出頁面的原因是因爲下一頁即將加載,但尚未加載。我可以使用pointer-events: none這將禁用任何鼠標事件,直到加載下一頁。完全禁用父項中的元素焦點

假設它是通過鍵盤完成的,我可以使用以下命令來防止雙擊輸入,或者乾淨地禁用其中的所有元素,例如tab-enter也會以這種方式禁用。

parent.onkeydown = fals 
parent.onkeyup = fals 
parent.onkeypress = fals 
function fals() {return false} 

這適用於短負載,但如果需要很長時間才能加載,用戶可能會注意到以下困難。

  • 無法遠離a標籤。
  • 不能使用幾個控制瀏覽器的鍵盤快捷鍵。
  • 能夠從地址欄中進入禁用區域。

除了爲所有子元素設置onfocus = blur之外,是否有一種現代而又流暢的方法來防止這三個問題?我今天不關心IE。

+0

您的前兩個「問題」看起來不像問題,它的行爲如您所指示的那樣。除此之外,爲什麼不從鏈接中解脫出來呢? – Madbreaks

+0

**按照指示行事**我不滿意前兩項是可能的事實。例如,我想允許用戶將模式div或地址欄列出,並且我不希望他們能夠回退。 **爲什麼不從鏈接unattach行爲**有多個鏈接和按鈕。我敏銳地意識到,我可以添加處理程序的鏈接來照顧(設置disabled = true,href = null)我希望有一種方法可以將一條規則應用於父項,這就是我所要求的關於。 –

回答

0

我認爲處理諸如你所說的事情的方法是使用Modal的,也就是說當他們點擊那個鏈接時,你彈出一個表示「處理」或類似的東西,並且創建一個帶有z-index的全屏div,因此用戶無法點擊/與屏幕上的其他任何內容進行交互,直到完成您正在做的任何事情。

查看http://twitter.github.com/bootstrap/javascript.html#modals爲我正在談論的一個例子。

+0

這就是我所想的,我只是想知道如何避免讓鍵盤操作。我可以使用你建議的例子,但我並不想在這個頁面添加另一個插件,只是爲了這一點。 –

+0

哦,我明白了。那麼,肯定會把焦點放在你的模態的某個地方,但如果這不夠好,你真的擔心他們會回到那個鏈接/按鈕,我會在你的提交中添加一個支票函數,用於設置/取消設置/檢查某個標誌的位置,以確保在結果返回之前再次調用標誌時,它將忽略它。這可能是確保客戶端最可靠的方式。 – hexist