2011-10-20 54 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