jQuery/JS 的 window.scroll 在 FireFox 不正常

问题描述

jQuery/JS 的 window.scroll 在 FireFox 不正常

请问以下这段 jQuery 的 window onscroll 代码,
在 IE、Chrome 正常,滑鼠卷一次,才会 alert 一次。
但在 FireFox 疯狂,滑鼠卷一次,就会 alert 非常多次。

请问此 window onscroll 和 FireFox 不和的问题,要怎么解决?

我是希望 FireFox 能和 IE、Chrome 一样,能够滑鼠卷一次,只要 alert 一次就好。
(若网友愿给有用的提示,我亦会给您点数)

感谢各位。

 <html>
<head runat="server">
    <title></title>
    <script type="text/javascript" 

src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

    <script type="text/javascript">
        $(window).scroll(function () {
            alert('hi, ' + $(window).scrollTop());
        });
    </script>
</head>
<body>
 这里的内容很长(亦可用 C# 去 Response.Write 很长的内容)
</body>
</html>

解决方案

之前我做的下拉刷新也出现这个问题,当时我在网上找了很多资料。

直接贴代码了:

  var tur = true;
        function haha(){
                     alert("haha");
                      tur = true;
                }

        window.onscroll = function(){
             if(tur){
                         setTimeout(haha,1000); tur = false;
               }else{
                    }
        }

这是折中的写法,希望你能够找到更好的解决办法。

解决方案二:

  大部分浏览器都是支持鼠标滚轮事件的,所以你可以先订阅鼠标滚轮事件的方法,每当事件被触发时,你能获取一个名为 wheelDelta 的属性,它代表刚才鼠标滚轮改变的大小,其中正值表示滚轮往下滑动,负值表示滚轮往上滑动。数值的绝对值越大,滑动范围越大

  但不幸的是依然有一款浏览器是不支持鼠标滚轮事件的。那就是FireFox。Mozilla 已经实现了一个名为"DOMMouseScroll"的事件的处理,它会传递一个名为 event 且附带了名为 detail 属性的事件参数过来,然而,这个 detail 属性不同于 wheelDelta,它只能返回正值,即只能坚持鼠标滚轮向下滚动的值。

        你的问题我在网上查了,我觉得这句话也许对您有些帮助就复制过来了,你看看,希望能帮到你

解决方案三:

这个我给的一点点小意见就是写冗余代码来解决这个兼容错误了,你可以在网上搜一下针对firefox的冗余写法;

解决方案四:

当时做的下拉刷新功能,因为多次触发onscroll事件,导致数据库多次连接,影响系统性能。于是才使用了setTimeout做延时绑定业务。

解决方案五:

感谢「河北小黄人」、「wolf094014」的回覆。这两天这会再试试,并在这个周末结帖、给点数。
若有其他可参考意见,欢迎提供。这两天的研究结果,我也会继续贴在这。谢谢。

时间: 2025-01-20 11:12:13

jQuery/JS 的 window.scroll 在 FireFox 不正常的相关文章

javascript- 窗口每滑动一次,为什么$(window).scroll()运行的次数不止1次?

问题描述 窗口每滑动一次,为什么$(window).scroll()运行的次数不止1次? 窗口每滑动一次,为什么$(window).scroll()运行的次数不是1?但是如果使用$(""div"").scroll()却只调用一次. 你看W3school上的例子,$(""div"").scroll()确实只调用了一次.但是你改成$(window).scroll(),即查看窗口的滑动时,能发现调用了不只一次 解决方案 楼主用的IE

返回顶部效果jquery/js版效果代码

js返回顶部 html 代码:  代码如下 复制代码 <!DOCTYPE HTML> <html lang="en-US"> <head>     <meta charset="UTF-8">     <title>js-回到顶部</title>     <style type="text/css">     *{margin:0;padding:0;}    

js中window.prompt的问题

问题描述 js中window.prompt的问题 现在是这个地方需要弹框 弹框没问题,保存到第二个文本框也没问题,但是弹框提交之后页面会刷新,然后这两个文半框里的值就没了.怎么防止值没有?或者能禁止刷新? 解决方案 prompt是不会刷新页面的,是不是你调用prompt的按钮时连接或者表单里面的submit按钮,改为普通的 <input type="button" 解决方案二: Jquery easyui prompt模拟window.prompt使JS暂停JS 父窗口向子窗口传

JS实现pasteHTML兼容ie,firefox,chrome的方法_javascript技巧

本文实例讲述了JS实现pasteHTML兼容ie,firefox,chrome的方法.分享给大家供大家参考,具体如下: <html> <body> <script language="JavaScript"> function test() { if (document.selection && document.selection.createRange) { var myRange = document.selection.cre

问个底层点的问题:为啥引入了jquery.js就能通过$()访问DOM?

问题描述 没能看懂jquery.js,恳请高手 指点下. 问题补充:在jQuery中定义了window.jQuery = window.$ = jQuery;为什么我们引用的时候只用$,而省略了window?Wind_ZhongGang 写道 解决方案 $是jquery定义的一个对象 里面封装了javascript查找DOM元素的方法.归根结底还是通过getElementById 方法来查找的.只是通过这样的方式更方便了.解决方案二:window是系统默认的 就跟jsp中的request,res

js的window.showModalDialog及window.open用法实例分析_javascript技巧

本文实例讲述了js的window.showModalDialog及window.open用法.分享给大家供大家参考.具体分析如下: 一.window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二.基本语法: window.open(pageURL,name,parameters) 其中: pageURL 为子窗口路径 name 为子窗口句柄 parameters 为窗口参数(各参数用逗号分隔) 三.示例: <SCRIPT>

js事件源window.event.srcElement兼容性写法(详解)_javascript技巧

如下所示: <html> <body> <p>一个好处就是 我想让body(或其他元素内)的某些对象响应事件 就不用挨个儿去写 只要在外层上写一个 然后检查event.srcElement.tagName或其他属性是不是你想要的来决定是否响应事件就可以了.不过好像event.srcElement在ff里不起作用 </p> <p>比如</p> <p> <input value="input">

jquery自定义插件——window的实现【示例代码】_jquery

本例子实现弹窗的效果: 1.jquery.show.js /* * 实现功能:点击在鼠标位置显示div * 版本序号:1.0 */ (function($){ $.fn.showDIV = function(options){ var defaults = {}; var options = $.extend(defaults, options); var showdiv=$(this); var close, title, content; close=$(" "); title=$

使用jquery/js获取iframe父子级、同级获取元素的方法_jquery

在web开发中,经常会用到iframe,难免会碰到需要在父窗口中使用iframe中的元素.或者在iframe框架中使用父窗口的元素 js 在父窗口中获取iframe中的元素 1. 格式:window.frames["iframe的name值"].document.getElementById("iframe中控件的ID").click(); 实例:window.frames["ifm"].document.getElementById("