问题描述
|
我使用dsmoothmenu jQuery插件在页面顶部生成了一个工具栏-大约一个月前(大部分时间)页面开始加载(大部分时间),菜单栏的第一项显示为-如果用户将鼠标悬停在该项目上。我花了数小时试图弄清楚是什么原因造成的,但没有取得任何进展。
我还有另一个页面,该页面使用与菜单完全相同的标记,以及相同的dsmoothmenu js / css,但没有显示上述行为。因此,我认为这可能与Meta标记或被覆盖的样式有关。通过与检查员一起调查,似乎something0ѭ元素正以某种方式赋予
display:block
,从而覆盖了display:none
的默认样式,该样式应一直有效,直到用户将鼠标悬停在该元素上为止。
这是问题的一个示例:http://www.foodtrucksmap.com/la/
还有一个工作示例:http://www.foodtrucksmap.com/iphone.html
编辑:因此,我发现,当页面加载完成时,如果鼠标不在窗口的外面,问题只会显现出来。如果将鼠标悬停在页面上,菜单栏将不会向下滑动。再加上它似乎只发生在Chrome中,这让我感到非常困惑。
解决方法
右键单击链接,然后单击“在新选项卡中打开链接”或“ ... ...新窗口”,这会在后台打开该窗口,我会在Chrome中看到您的问题。这给了我这个结论。
出于某些奇怪的原因,Google的Chrome浏览器将“虚拟”指针定位在触发脚本的top:1,left:1位置。只要引入实际的“物理”指针,该位置就会接管,问题就不存在了。
由于这似乎是Chrome的问题,我们只能通过一点技巧来防止这种情况。我要说的是,给主div#wrapper左边留有一定的喘息空间吗?或者像第二个示例这样的东西可以起作用!!!
, 到目前为止,我已经能够发现onMouseOver事件实际上是在页面加载时触发的。
由于我没有直接访问JS文件的权限,因此请在所有文件(而不是jquery文件)中搜索单词“ trigger \”,然后尝试找出它是否随时可能在调用它。
有空的时候我会做更多的研究。
, 如果Nicklas是正确的并且悬停是出于某种原因触发onload,请尝试使用以下条件将悬停函数的js包装在菜单javascript中:
if(event.target == this) { //Check if the hover event actually targets the object.
//Hover Code//
}
希望这可以帮助!