2011-10-20 100 views
1

我想,當用戶單擊後退按鈕,關閉我的自定義菜單抽屜菜單抽屜。現在,這種設計缺陷是抽屜在沒有懸停的情況下保持開放的唯一方式。慾望是只有懸停可以保持一個抽屜打開。閉幕式上後退按鈕(Safari瀏覽器的問題)

詮:

1 - 當你懸停菜單,抽屜打開。

2 - 當您單擊菜單(或抽屜)中的鏈接離開頁面時,抽屜 將在剛剛離開的頁面上保持打開狀態。

3 - 當您使用瀏覽器的「返回」按鈕返回剛剛離開的頁面時,您將看到打開的菜單抽屜。

4 - 關閉打開卡住菜單抽屜的唯一方法是徘徊&離開它。

我試過很明顯的,就是利用「卸載」或「卸載前」事件。這不起作用,因爲在卸載時鼠標仍然懸停在物品上。懸停使抽屜保持打開狀態,同時卸載事件試圖關閉。 (我從演示刪除破 「卸載」 功能。)

http://jsfiddle.net/sparky672/rNzPR/

完整的示例與外部的聯繫,以便後退按鈕可以進行測試......

http://jsfiddle.net/sparky672/rNzPR/show/

無論如何,結果是一樣的...當點擊後退按鈕時,「上次使用」菜單抽屜被卡住,關閉它的唯一方法是「懸停&離開」它。

我對解決方法的建議非常感興趣,因此它不會在第一位置保持打開狀態,或者至少不需要「進入/離開」順序以使其關閉......以較高者爲準簡單。

(演示包含在僅用於開發透明容器邊界真正的系統是不是難看。)

編輯:

  • 我看到的問題在Safari 4 & 5和Firefox 3

  • 在Firefox 4和7中,出現該問題,但只要將鼠標移動一次在窗口的任何地方,菜單關閉。 (足夠好)

  • 我在IE 8,IE 9或Chrome中看不到問題。

看來,某些瀏覽器必須改善或改變他們如何應對「前/緩存後,」關於jQuery的$(document).ready,因爲只有這樣才能不會有我的這個問題,是後退按鈕以新觸發$(document).ready內的代碼。

由於這看起來主要只是一個Safari的問題,也許我現在就會和它一起生活。

+0

在Chrome 14.0.835.202我無法重現此問題。你能詳細說明問題是什麼,以及你可以在哪些瀏覽器中重現它? –

+0

@GeorgePittarelli,我根據你的意見完全更新了我的問題。謝謝。 – Sparky

+0

我可能正在簡化它,但爲什麼不抓住抽屜鏈接上的點擊事件,關閉抽屜,然後讓鏈接繼續(不返回false或preventDefault)。 –

回答

1

正如在評論中提到的,您應該能夠覆蓋我將一個closeDrawer調用附加到抽屜鏈接的單擊事件的行爲。喜歡的東西:

$('div[id|="menu"] a').click(function(){ 
    // first, close the drawer 
    closeDrawer(); 
    // now just let it carry on with following the link 
    // (don't try to return false or event.preventDefault) 
}); 

或者,更簡潔地說:

$('div[id|="menu"] a').click(closeDrawer); 
+0

我之前評論過,因爲我不知道這是否是您想嘗試的選項。但是由於你似乎在上,我會將其作爲解決方案發布。 –

+0

您的解決方案似乎正在工作。但我真的不明白這臺服務器。即使我刪除了整個JS文件,我仍然可以在任何**瀏覽器中調用它。緩存是一回事,但是當文件完全沒有了,它又怎麼能被調用呢?愚蠢到底。 – Sparky

+1

我剛剛在上面看到您的評論...它是保留舊版本的主機。我可以在不同的瀏覽器中調用它,即使刪除後它仍然存在。 – Sparky