2012-06-03 33 views
1

我有一個錨點列表,這些錨點的樣式可以改變焦點和懸停的外觀。點擊後,他們應該恢復正常;失去焦點/變得模糊。這在谷歌瀏覽器中按預期工作,但在Firefox和IE瀏覽器中沒有,它仍然是焦點。爲什麼?當鏈接被點擊時,Firefox和IE不會失去焦點,但Chrome確實有

這是我的代碼:http://jsfiddle.net/8fTQs/

我的猜測是,FF和IE希望重新加載頁面被點擊的錨時,但由於這些只是指一個anchorpoint(#;哈希),並沒有重新 - 渲染頁面(但如果它被重新加載,它當然會重新渲染並失去焦點)。

如何解決這個問題?

謝謝!

編輯:我已經設置了適當的文檔類型。

回答

0

即使頁面沒有重新加載,將焦點鎖定在點擊上也是正確的行爲:它使得標籤導航在該點之後正確工作。

這聽起來像你想造型:active錨,而不是:focus的,如果你只想在錨點被點擊的時候造型。

+0

哦。那麼,我想這解決了我的問題。然而,我還有另外一個問題。我希望鏈接可以通過Tab鍵進行導航,因此當用Tab鍵(正在激活)導航到該鏈接時,他們需要「顯示」(改變樣式)。你是否也有解決方案? – lindhe

+0

不,不幸的。在用戶點擊輸入之前,Tabbing不會激活鏈接;它只是讓它聚焦...... –

+0

你確定嗎? :S因爲如果樣式表示「:active {background ...}」並且我標籤給他們,他們將改變背景,但是如果樣式是「:focus {background ...}」並且我標籤給他們,他們不會更改。 編輯:但鏈接確實得到了他們的邊界。 (「:focus {background ...}」) – lindhe

1

您仍然需要:focus款式來幫助keyboard navigation,所以最好不要將其刪除。

Chrome瀏覽器在點擊後不會保持焦點,但FF和IE都可以。你可以做的是標準化的行爲,但模糊鏈接每次點擊 - 但只有點擊!

一個簡單$('a').click(function() {this.blur();})會模糊元素(模糊=失去焦點)但瀏覽器(或只是jQuery的),當你按下回車關鍵也激發了「點擊」事件。

所以一個快速和骯髒的解決辦法是:$('a').mouseup(function() {this.blur();})

0

正確的做法是,重點應留後鼠標點擊的錨(作爲FF和IE瀏覽器現在做它)。

已註冊chromium bug已修復,2014年8月14日創建的patch正在審覈中。應該在即將到來的更新中獲得修復。

+0

問題依然存在,我認爲由於向後兼容性的原因,補丁沒有得到補充。 –