【问题标题】:scrolltop() doesn't work in IE9 at allscrolltop() 在 IE9 中根本不起作用
【发布时间】:2013-07-21 22:27:08
【问题描述】:

http://jsfiddle.net/QF47A/7/

function onscroll(){
    document.getElementById("fly").style.top=""+ $(document).scrollTop() * 5 +"px";
}

检查一下... 叹息

在 IE9 中无法工作...尚未在 IE10 中测试。 但是,是的,它可以在 Chrome、Firefox 和几乎所有的浏览器中运行,除了该死的 IE。

【问题讨论】:

  • 我没有对你投反对票,但如果你已经在使用 jQuery,那为什么还要使用document.getElementById
  • @Mathletics 来吧,从他概述的问题来看,他的问题非常明显。它在 IE9 中不起作用,他希望这样做——他提供了自己的代码和小提琴。无需迂腐。
  • 嗯,谢谢@KyleMuir :) 我讨厌心胸狭窄的人啊哈

标签: javascript jquery internet-explorer internet-explorer-9 browser


【解决方案1】:

改为收听windowscroll事件:

$(window).on('scroll', function() {
    document.getElementById("fly").style.top = $(document).scrollTop() * 5 +"px";
});

Demo


在最新的 Chrome、Firefox、Opera 15 和 IE8 中测试。似乎在任何浏览器中都可以正常工作,主要问题是 IE 不会像其他浏览器那样将bodyonscroll 属性解析为window.onscroll 属性。 Live Test Case。测试用例来源:

<body onscroll="42;">

document.body.innerHTML = 'Does ' + (window.onscroll ? '' : '<b>not</b> ') + 
    'parse body onscroll attribute to window.onscroll';

因此,将事件处理程序直接分配给 window.onscroll 也可以解决问题,但是当您使用 jQuery 时,.on() method 是事件绑定的首选。它修补了跨浏览器的不一致问题,您不必担心会覆盖预先存在的处理程序。

【讨论】:

    猜你喜欢
    • 2012-08-17
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多