jQuery实现可兼容IE6的滚动监听功能_jquery

本文主要和大家介绍jquery实现可兼容ie6的滚动监听功能,结合实例形式分析了jquery针对不同浏览器的事件监听、响应及页面属性动态变换相关实现技巧,需要的朋友可以参考下,希望能帮助到大家。

其实这东西本打算用原生的javascript来写,但是原生的javascript取class与监听滚动条的滚动过于麻烦,因此上了jQuery,没关系,反正兼容IE6就行。

将实现如下的效果:

jQuery实现可兼容IE6的滚动监听功能_jquery

也就是在网页中有点常见的滚动监听。相应的标题,滚到哪里,则左边的滚动条当前标题前的。。。就变成》》》,,当然了,左边的标题同样是可以点击,马上滚到该滚的地方。

首先是网页布局部分,代码如下,请忽略大堆的JavaScript介绍,只是为了占格子,说明效果。

nbsp;HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">          滚动监听                

      

        

        

                    

        

英文介绍

        

JavaScript is also used in environments that are not web-based, such as PDF documents, site-specific browsers, and desktop widgets. Newer and faster JavaScript virtual machines (VMs) and platforms built upon them have also increased the popularity of JavaScript for server-side web applications. On the client side, JavaScript has been traditionally implemented as an interpreted language, but more recent browsers perform just-in-time compilation. It is also used in game development, the creation of desktop and mobile applications, and server-side network programming with runtime environments such as Node.js.

        

由来

        

Netscape在最初将其脚本语言命名为LiveScript,后来网景在与昇阳公司合作之后将其改名为JavaScript[7]。JavaScript最初受Java启发而开始设计的,目的之一就是“看上去像Java”[8],因此语法上有类似之处,一些名称和命名规范也借自Java。但JavaScript的主要设计原则源自Self和Scheme[9]。JavaScript与Java名称上的近似,是当时网景为了营销考虑与太阳微系统达成协议的结果。为了获取技术优势,微软推出了JScript来迎战JavaScript的脚本语言。为了互用性,Ecma国际(前身为欧洲计算机制造商协会)创建了ECMA-262标准(ECMAScript)。现在两者都属于ECMAScript的实现。尽管JavaScript作为给非程序人员的脚本语言,而非作为给程序人员的脚本语言来推广和宣传,但是JavaScript具有非常丰富的特性。

        

区别

        

不同于服务器端脚本语言,例如PHP与ASP,JavaScript主要被作为客户端脚本语言在用户的浏览器上运行,不需要服务器的支持。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。而随着服务器的强壮,虽然现在的程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。同时,有些特殊功能(如AJAX)必须依赖Javascript在客户端进行支持。随着引擎如V8和框架如Node.js的发展,及其事件驱动及异步IO等特性,JavaScript逐渐被用来编写服务器端程序。

        

标题2

        

Netscape在最初将其脚本语言命名为LiveScript,后来网景在与昇阳公司合作之后将其改名为JavaScript[7]。JavaScript最初受Java启发而开始设计的,目的之一就是“看上去像Java”[8],因此语法上有类似之处,一些名称和命名规范也借自Java。但JavaScript的主要设计原则源自Self和Scheme[9]。JavaScript与Java名称上的近似,是当时网景为了营销考虑与太阳微系统达成协议的结果。为了获取技术优势,微软推出了JScript来迎战JavaScript的脚本语言。为了互用性,Ecma国际(前身为欧洲计算机制造商协会)创建了ECMA-262标准(ECMAScript)。现在两者都属于ECMAScript的实现。尽管JavaScript作为给非程序人员的脚本语言,而非作为给程序人员的脚本语言来推广和宣传,但是JavaScript具有非常丰富的特性。

            

登录后复制

基本思想如下:

jQuery实现可兼容IE6的滚动监听功能_jquery

这里,

(1)在第12行故意放一个空格,是因为不要让

这个p空空是也,以致于没有了宽度。

(2)为了使IE6支持position:fixed属性,引入了如下的一个ie6fixed.js,这东西的出处已经无从可考,新建一个js文件,拷贝下面的代码保存,在编辑网页的时候为了使IE6支持position:fixed引入这段脚本,同时对要在IE6实现position:fixed的脚本处,使用$(“#p名称”).toFixed();便兼容。

ie6fixed.js:

(function($){  var isIE = !!window.ActiveXObject;  var isIE6 = isIE && !window.XMLHttpRequest;  var isIE8 = isIE && !!document.documentMode && (document.documentMode == 8);  var isIE7 = isIE && !isIE6 && !isIE8;  if (isIE6 || isIE7) { //ie6 | ie7 | ie8 not in standards mode    $().ready(function(){      var body = document.body;      var BLANK_GIF;      if (body.currentStyle.backgroundAttachment != "fixed") {        if (body.currentStyle.backgroundImage == "none") {          body.runtimeStyle.backgroundImage = "url(" + BLANK_GIF + ")"; // dummy          body.runtimeStyle.backgroundAttachment = "fixed";        }      }    });  }  $.fn.extend({    toFixed: function(position){      var isIE = !!window.ActiveXObject;      var isIE6 = isIE && !window.XMLHttpRequest;      var isIE8 = isIE && !!document.documentMode && (document.documentMode == 8);      var isIE7 = isIE && !isIE6 && !isIE8;      if (isIE6 || isIE7) {      }      else {        return this;      }      return this.each(function(){        var t = $(this);        var id = t.get(0).id || 'fixed_' + parseInt(Math.rand() * 10000);        var rect = {          w: t.width(),          h: t.height(),          l: t.css('left'),          r: t.css('right'),          't': t.css('top'),          b: t.css('bottom')        };        if (rect.l != 'auto') {          rectl = parseInt(rect.l);        }        else {          rectl = 0;        }        if (rect.r != 'auto') {          rectr = parseInt(rect.r);        }        else {          rectr = 0;        }        if (rect.t != 'auto') {          rectt = parseInt(rect.t);        }        else {          rectt = 0;        }        if (rect.b != 'auto') {          rectb = parseInt(rect.b);        }        else {          rectb = 0;        }        var _pos = {          left: rect.l,          right: rect.r,          top: rect.t,          bottom: rect.b        };        _pos = $.extend(_pos, position);        var css = t.attr('style') + ';';        css += 'position:absolute;bottom:auto;right:auto;clear:both;';        if (rect.l != 'auto' && rect.r != 'auto')          css += 'width:expression(eval(document.compatMode && document.compatMode=='CSS1Compat') ? documentElement.clientWidth - ' + rectl + ' - ' + rectr + ' : document.body.clientWidth - ' + rectl + ' - ' + rectr + ' );';        if (rect.l == 'auto' && rect.r != 'auto')          css += 'left:expression(eval(document.compatMode && document.compatMode=='CSS1Compat') ? documentElement.scrollLeft + (documentElement.clientWidth-this.clientWidth - ' + rectr + ') : document.body.scrollLeft +(document.body.clientWidth-this.clientWidth - ' + rectr + '));';        else          css += 'left:expression(eval(document.compatMode && document.compatMode=='CSS1Compat') ? documentElement.scrollLeft + ' + rectl + ' : document.body.scrollLeft + ' + rectl + ');';        if (rect.t == 'auto' && rect.b != 'auto')          css += 'top:expression(eval(document.compatMode && document.compatMode=='CSS1Compat') ? documentElement.scrollTop + (documentElement.clientHeight-this.clientHeight - ' + rectb + ') : document.body.scrollTop +(document.body.clientHeight-this.clientHeight - ' + rectb + '));';        else          css += 'top:expression(eval(document.compatMode && document.compatMode=='CSS1Compat') ? documentElement.scrollTop + ' + rectt + ' : document.body.scrollTop + ' + rectt + ');';        t.attr('style', css);      });    }  });})(jQuery);

登录后复制

随后,以下的核心脚本才是本页面实现的关键所在:

  $("#scrollspy").toFixed();//让scrollspy这个p在IE6同样可以position:fixed;  //开始先遍历标题,生产目录  var title_counter=0;  $(".title").each(function(){    title_counter++;    //对于每一个class为title的标题设置锚点,同时在#scrollspy同生产每一个锚点的链接    $(this).attr("id","title"+title_counter);    $("#scrollspy").append("

。。。"+$(this).html()+""); //这里使用到

的组合,而不是

登录后复制

相关推荐:

JavaScript实现为事件句柄绑定监听函数实例详解

以上就是jQuery实现可兼容IE6的滚动监听功能_jquery的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2787460.html

(0)
上一篇 2025年3月8日 18:08:05
下一篇 2025年2月18日 00:28:04

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • jQuery Mobile窗体长内容缺陷如何解决

    本文主要和大家介绍jquerymobile之窗体长内容的缺陷与解决方法,结合具体实例形式分析了jquerymobile底部悬浮层遮挡情况下的解决方法,非常简单实用,需要的朋友可以参考下,希望能帮助到大家。 一旦窗体中出现长内容,使用笔者那种…

    2025年3月8日
    200
  • jQuery实现IE输入框完成placeholder标签代码分享

    本文主要和大家介绍jquery实现ie输入框完成placeholder标签功能的方法,涉及jquery事件响应及针对页面元素属性的动态操作相关实现技巧,需要的朋友可以参考下,希望能帮助到大家。 如果在输入框加上placeholder=&#8…

    2025年3月8日
    200
  • jquery实现一键复制到剪切板的代码分享

    今天做项目有一个功能,通过点击事件复制一段文本到剪切板,在网上找了一些,整理了一下,方便需要的朋友使用。本文主要为大家带来一篇jquery 一键复制到剪切板的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧…

    编程技术 2025年3月8日
    200
  • jQuery实现倒计时及短信倒计时功能的实现代码

    本文主要和大家分享jquery实现倒计时功能以及jquery实现发送短信倒计时功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 在实际运用中,经常会使用到倒计时的效果。以下代码利用jQuery实现了一个倒计时计时器…

    编程技术 2025年3月8日
    200
  • jquery倒计时小应用实现代码

    jquery可以实现倒计时功能,本文主要和大家详细介绍了jquery实现倒计时小应用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 html    登录后复制                          小米 …

    编程技术 2025年3月8日
    200
  • jQuery实现IE6的遮罩功能

    本文主要和大家介绍jquery实现可兼容ie6的遮罩功能,详细分析了jquery遮罩层的布局、样式及功能实现技巧,需要的朋友可以参考下,希望能帮助到大家。 最精简,最强大的 jQuery 遮罩层效果。 当浏览器改变大小时,遮罩层的大小会相应…

    编程技术 2025年3月8日
    200
  • jQuery表单元素选择器以及获取select元素选择器实例

    本文我们主要和大家分享jquery表单元素选择器以及获取select元素选择器实例,希望能帮助到大家。 首先我们先学习一下jQuery获取select元素选择器的方法: jQuery获取Select选择的Text和Value: 语法解释: …

    2025年3月8日
    200
  • jQuery之EasyUI开发技巧汇总

    本文主要和大家介绍jquery easyui开发技巧总结的相关资料,希望通过本文大家能够掌握easyui的开发技巧,需要的朋友可以参考下,希望能帮助到大家。 jQuery EasyUI开发技巧总结 1、使用tabs时,如果使用的不是url,…

    编程技术 2025年3月8日
    200
  • jQuery UI日期选择器实例详解

    默认功能 日期选择器(Datepicker)绑定到一个标准的表单 input 字段上。把焦点移到 input 上(点击或者使用 tab 键),在一个小的覆盖层上打开一个交互日历。选择一个日期,点击页面上的任意地方(输入框即失去焦点),或者点…

    编程技术 2025年3月8日
    200
  • jQuery实现两个div中按钮互换位置代码分享

    本文主要和大家介绍使用jquery实现两个p中按钮互换位置的实例代码,需要的朋友可以参考下,希望能帮助到大家。 效果如下   代码如下:      $(function() { //定义一个变量等于所有button按钮 var btns =…

    2025年3月8日
    200

发表回复

登录后才能评论