Javascript jQuery.scrollTop()未在IE中触发$(window).scroll()

Javascript jQuery.scrollTop()未在IE中触发$(window).scroll(),javascript,jquery,Javascript,Jquery,我正在创建一个单页网站,链接可以将页面向下滚动到url哈希部分指定的元素。在Firefox和Chrome中,它工作正常,但在IE中尝试时,页面加载时似乎不会触发滚动事件 这是检查散列并滚动到文档特定部分的代码,这发生在$(document).ready() 我试图通过在代码末尾添加$(window).scroll()来强制它触发滚动,但这似乎只是将滚动重置为0 谢谢 编辑 抱歉,我不认为我说得很清楚,但是这段代码在技术上工作得很好,但是我有一个$(window).scroll(function(

我正在创建一个单页网站,链接可以将页面向下滚动到url哈希部分指定的元素。在Firefox和Chrome中,它工作正常,但在IE中尝试时,页面加载时似乎不会触发
滚动
事件

这是检查散列并滚动到文档特定部分的代码,这发生在
$(document).ready()

我试图通过在代码末尾添加
$(window).scroll()
来强制它触发滚动,但这似乎只是将滚动重置为0

谢谢

编辑

抱歉,我不认为我说得很清楚,但是这段代码在技术上工作得很好,但是我有一个
$(window).scroll(function(){…})事件处理程序在我的脚本中,当滚动超过某个点时,会将标题附加到页面顶部

这是代码:

var obj = $('#header-background');
var obj_height = $('#header-background').outerHeight(true);
obj.wrap('<div style="width: ' + obj.outerWidth(true) + 'px; height: ' + obj_height + 'px; display: block">');

var top = obj.offset().top - parseFloat(obj.css('marginTop').replace(/auto/,0)) + 20;

$(window).scroll(function() {
    var y = $(this).scrollTop();

    if(y - (obj_height - 80) >= top) {
        obj.addClass('fixed').css({
            'height': '80px'
        });
    } else {
        obj.removeClass('fixed').css({
            'height': '245px'
        }, 'fast');
    }
});
var obj=$(“#标题背景”);
var obj_height=$(“#标题背景”).outerHeight(true);
对象包裹(“”);
var top=obj.offset().top-parseFloat(obj.css('marginTop')。replace(/auto/,0))+20;
$(窗口)。滚动(函数(){
var y=$(this.scrollTop();
如果(y-(obj_高度-80)>=顶部){
obj.addClass('fixed').css({
“高度”:“80px”
});
}否则{
对象removeClass('fixed').css({
“高度”:“245px”
}“快”);
}
});

您是否进行了一些调试以查看它在哪里中断?我在这方面的策略是首先确定它在以下方面取得了多大进展:

if(location.hash != '' && location.hash != '#!/home') {
    console.log("setting scroll top");
    var obj_id = location.hash.substr(3, location.hash.length);
    console.log("object: %o", obj_id);
    console.log("scrolling to: %s", $('#'  + obj_id).offset().top - 80);
    $('html, body').scrollTop($('#'  + obj_id).offset().top - 80);
}

这将帮助您验证您是否从散列和诸如此类的东西中得到了有用的东西。我想知道您是否没有从$('#'+obj_id).offset()中获取有效值。top

location.hash!='#/主页“
你能仔细检查一下你的代码吗?为什么会有一个错误!在#之后?也可以使用
try{$('html,body')...]}catch(e){alert(e)}
应该告诉您问题出在哪里,或者问题出在哪里。也可以使用
position().top
代替
offset().top
The
#/
是故意的,这就是我希望URL的外观。我将尝试捕捉一个异常。谢谢。嗨,我已经编辑了我的问题,因为我不认为我是在明确自己的实际问题。谢谢你的帮助。
if(location.hash != '' && location.hash != '#!/home') {
    console.log("setting scroll top");
    var obj_id = location.hash.substr(3, location.hash.length);
    console.log("object: %o", obj_id);
    console.log("scrolling to: %s", $('#'  + obj_id).offset().top - 80);
    $('html, body').scrollTop($('#'  + obj_id).offset().top - 80);
}