Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 滚动顶闪烁-Internet Explorer_Javascript_Jquery_Internet Explorer_Scrolltop - Fatal编程技术网

Javascript 滚动顶闪烁-Internet Explorer

Javascript 滚动顶闪烁-Internet Explorer,javascript,jquery,internet-explorer,scrolltop,Javascript,Jquery,Internet Explorer,Scrolltop,我的公司要求我调查在Internet Explorer中查看的后续页面上的一个问题(肯定是IE9,我认为它将影响7-10) 问题如下-当单击页面上的任何主要链接(部分菜单-语音、连接、云、移动或每个部分中的子菜单-呼叫和线路、托管VoIP、ISD…等)时,jquery被触发以显示相关部分,在Chrome、FF和Safari中,一切都可以正常工作,然而,在IE中,在ScrollTop命令运行之前,窗口瞬间闪烁到锚定标记 下面提供了Javascript代码示例,如有任何帮助,将不胜感激 //hash

我的公司要求我调查在Internet Explorer中查看的后续页面上的一个问题(肯定是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中

$(window).bind('hashchange', function (e) {
  e.preventDefault();
  // rest of your code
防止
hashchange
事件的默认操作。

请记住将
e
参数也添加到函数中。

ahren-感谢这一点,我已经做出了更改,现在的行为似乎完全是随机和间歇性的。基本上60%的时间闪烁不会发生,但偶尔会发生。似乎也没有一个特定的链接导致闪烁!有什么想法吗?或者这是我们将不得不面对的机器环境中的幽灵吗?@charliek-看来hashchange事件在一些较旧的浏览器()中不受支持。这里有一个插件可以帮助polyfill,希望它能给你更一致的结果!