当我在Internet Explorer中查看时,我的公司已经要求我调查下一页http://waxy.cloudtelephones.co.uk/departments/#voice上的问题(肯定是IE9,我认为它会影响7-10)。
问题如下 - 点击页面上的任何主要链接时(“部分”菜单 - 语音,连接,云,移动或每个部分中的子菜单 - 呼叫和线路,托管VoIP,ISD ...等等)jquery被激发以显示相关部分,在Chrome,FF和Safari中一切正常运行,但是在IE中,窗口在ScrollTop命令运行之前暂时闪烁到锚标签。
下面提供了Javascript代码示例,非常感谢任何帮助。
//hash control
if(window.location.hash) {
var hash = window.location.hash.substring(1);
var selected = "." + hash;
var parents = [ "voice", "mobile", "cloud-services", "connectivity"];
if ($.inArray(hash, parents) != -1) {
$('html, body').animate({"scrollTop":"0"});
$(selected).show();
$('#buttom-nav ul li#' + hash).addClass('selected');
$(selected + " aside.sub-menu").slideDown('slow');
$(selected + " .child-menu li:first").addClass('selected');
$(selected + " .child-page:first").delay(1000).fadeIn('slow');
};
if ($.inArray(hash, parents) == -1) {
var parent = $(selected).closest('.dptmnts').attr('class').split(' ')[2];
$('html, body').animate({"scrollTop":"0"});
$(selected).closest('.dptmnts').show();
$('.child-menu li#' + hash).addClass('selected');
$('#buttom-nav ul li#' + parent).addClass('selected');
$(selected).siblings('aside.sub-menu').slideDown('slow');
$(selected).fadeIn('slow').delay(1000).fadeIn('slow');
};
};
//hash change control
$(window).bind('hashchange', function () {
var hash = window.location.hash.substring(1);
var selected = "." + hash;
var parents = [ "voice", "mobile", "cloud-services", "connectivity"];
if ($.inArray(hash, parents) != -1) {
$(document).scrollTop(0);
$("aside.sub-menu:visible").slideUp('fast');
$(".child-page:visible").fadeOut('fast');
$(".dptmnts:visible").delay(1000).hide('fast');
$('#buttom-nav ul li').removeClass('selected');
$('.child-menu li').removeClass('selected');
$('.child-menu li#' + hash).addClass('selected');
$(selected).fadeIn('fast');
$('#buttom-nav ul li#' + hash).addClass('selected');
$(selected + " aside.sub-menu").delay(500).slideDown('slow');
$(selected + " .child-menu li:first").addClass('selected');
$(selected + " .child-page:first").delay(500).fadeIn('slow');
};
if ($.inArray(hash, parents) == -1) {
var parent = $(selected).closest('.dptmnts').attr('class').split(' ')[2];
$(document).scrollTop(0);
$(".child-page:visible").fadeOut('fast');
$('.child-menu li').removeClass('selected');
$('.child-menu li#' + hash).addClass('selected');
$(selected).delay(500).fadeIn('slow');
};
});
$( ".page-departments #content a" ).not('.pop-up').click(function(event) {
event.preventDefault()
window.location.hash = this.hash;
$(document).scrollTop(0);
return false;
});
最后一件事 - 我认为问题可能是两个哈希事件(加载和更改)之间的冲突以及所有调用scrollTop的click函数但是我已经尝试完全删除click函数而不是解决问题它使Chrome,FF和Safari中出现相同的“闪烁”!
答案 0 :(得分:1)
$(window).bind('hashchange', function (e) {
e.preventDefault();
// rest of your code
阻止hashchange
事件的默认操作
请记住将e
参数添加到该函数中。