我有一个在 IE9+、Chrome 和 Firefox 中运行良好的 jQuery onclick 菜单。但是在 IE8 中打开速度非常慢。菜单显示大约需要 10 秒,并且没有任何动画播放,菜单只是出现。
该菜单使用最新版本的 jQuery (v1.10.2),并且仅使用幻灯片和动画来打开和关闭菜单的不同部分。我已经尝试在谷歌上搜索各种慢速 jQuery、慢速加载菜单和慢速动画的 IE8 和 jQuery 组合,但我什至无法远程找到任何像我遇到的问题一样的东西。
您可以通过访问我的网站来查看问题。使用 IE8 访问它,当您单击测试类别 1 或 2 时,您会注意到速度非常慢。
有没有人遇到过这种问题?有谁知道是什么原因导致它以及让它正常工作的解决方案?
编辑
我注意到它不仅会影响菜单,还会影响轮播。如果您查看动画,它们也不会滑动,但是在 IE9 + 中它们确实会滑动。我不确定这两者是否有联系,但奇怪的是这两个 jQuery 效果都受到了影响。
编辑 2
经过更多测试后,我注意到如果菜单的底部落在轮播下方的选项卡上,那么选项卡上的位会立即显示,如果你在选项卡上。关闭菜单时也会发生同样的情况。将鼠标悬停在选项卡上,那里绘制的菜单部分就会消失。
然后我观察并注意到当轮播发生变化时菜单会显示和消失。这似乎是一个重绘问题,但是我一直试图让它在完成后绘制的代码似乎不起作用。这是我从这里的另一个答案中得到的代码(由于下面的答案,稍作修改以使用 jQuery 元素)。
function FlushThis(id){
var msie = 'Microsoft Internet Explorer';
var tmp = 0;
//var elementOnShow = document.getElementById(id);
var elementOnShow = $(id);
if(navigator.appName == msie) {
tmp = elementOnShow.parentNode.offsetTop + 'px';
} else {
tmp = elementOnShow.offsetTop;
}
}
我认为这可能是找到要重绘的正确函数或在正确元素上运行该函数的情况。我目前在单击的元素上运行它,这可能不是正确的元素。我尝试在各种元素上运行该函数,包括主 UL、单击的元素、打开的元素和打开的元素的父元素。他们中的任何一个都没有运气。
JSFiddle:这里的要求是问题的 JSFiddle,但对我来说,它甚至在 IE10 中都行不通。它在 Chrome 中运行良好。
编辑 3:
除了最基本的必需品之外,我已经剥离了所有东西并将其放入测试文件中。你可以在我的网站上查看它。我在 IE 控制台和任何其他控制台中都没有收到错误。它仍然给出同样的问题,菜单没有被绘制。但是,因为它后面没有轮播来强制重绘,所以它永远不会在这个测试站点上显示。
到目前为止,我尝试过的所有重绘脚本都失败了。我怎样才能得到这个工作?