fix-ie5.js扩展在IE5下不能使用的几个方法


Posted in Javascript onAugust 20, 2007

在IE5下的Javascript:
Array不支持push(),pop();Function不支持apply();String对象的replace方法不支持替换成一个处理函数。
使用下面的代码就可修复上述方法在IE5下无效的问题。
/*
  fix-ie5.js, version 1.0 (pre-release) (2005/05/15) x3
  Copyright 2005, Dean Edwards
  Web: http://dean.edwards.name/

  This software is licensed under the CC-GNU LGPL
  Web: http://creativecommons.org/licenses/LGPL/2.1/
*/

if (/MSIE 5.0/.test(navigator.userAgent)) new function() {

  var $$apply = function($function, $object, $arguments) {
    $function.apply($object, $arguments);
  };

  // fix String.replace
  if (''.replace(/^/, String)) {
    // preserve String.replace
    var _stringReplace = String.prototype.replace;
    // create String.replace for handling functions
    var _functionReplace = function($expression, $replacement) {
      var $match, $newString = "", $string = this;
      while ($string && ($match = $expression.exec($string))) {
        $newString += $string.slice(0, $match.index) + $$apply($replacement, this, $match);
        $string = $string.slice($match.lastIndex);
      }
      return $newString + $string;
    };
    // replace String.replace
    String.prototype.replace = function ($expression, $replacement) {
      this.replace = (typeof $replacement == "function") ? _functionReplace : _stringReplace;
      return this.replace($expression, $replacement);
    };
  }

  // fix Function.apply
  if (!Function.apply) {
    var APPLY = "apply-" + Number(new Date);
    $$apply = function(f, o, a) {
      var r;
      o[APPLY] = f;
      switch (a.length) { // deconstruct for speed
        case 0: r = o[APPLY](); break;
        case 1: r = o[APPLY](a[0]); break;
        case 2: r = o[APPLY](a[0], a[1]); break;
        case 3: r = o[APPLY](a[0], a[1], a[2]); break;
        case 4: r = o[APPLY](a[0], a[1], a[2], a[3]); break;
        default:
          var aa = [], i = a.length - 1;
          do aa[i] = "a[" + i + "]"; while (i--);
          eval("r=o[APPLY](" + aa + ")");
      }
      delete o[APPLY];
      return r;
    };
    // fix ICommon
    ICommon.valueOf.prototype.inherit = function() {
      return $$apply(arguments.callee.caller.ancestor, this, arguments);
    };
  }

  // array fixes
  if (![].push) Array.prototype.push = function() {
    for (var i = 0; i < arguments.length; i++) {
      this[this.length] = arguments[i];
    }
    return this.length;
  };
  if (![].pop) Array.prototype.pop = function() {
    var $item = this[this.length - 1];
    this.length--;
    return $item;
  };
};

Javascript 相关文章推荐
在网页里看flash的trace数据的js类
Jan 10 Javascript
纯JS实现的批量图片预览加载功能
Aug 14 Javascript
js自执行函数的几种不同写法的比较
Aug 16 Javascript
JS中showModalDialog 的使用解析
Apr 17 Javascript
dwz 如何去掉ajaxloading具体代码
May 22 Javascript
JavaScript包装对象使用介绍
Aug 29 Javascript
Js实现动态添加删除Table行示例
Apr 14 Javascript
JavaScript实现twitter puddles算法实例
Dec 06 Javascript
js实现的后台左侧管理菜单代码
Sep 11 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 jQuery
bootstrap的常用组件和栅格式布局详解
May 02 Javascript
jQuery实现轮播图效果demo
Jan 11 jQuery
关于恒等于(===)和非恒等于(!==)
Aug 20 #Javascript
图片格式的JavaScript和CSS速查手册
Aug 20 #Javascript
javascript 一个自定义长度的文本自动换行的函数
Aug 19 #Javascript
js类中获取外部函数名的方法
Aug 19 #Javascript
写了一个layout,拖动条连贯,内容区可为iframe
Aug 19 #Javascript
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
Aug 19 #Javascript
Code: write(s,d) 输出连续字符串
Aug 19 #Javascript
You might like
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
2018/09/16 PHP
使用PHP开发留言板功能
2019/11/19 PHP
javascript 跨浏览器开发经验总结(五) js 事件
2010/05/19 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
2016/01/14 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
详解python数据结构和算法
2019/04/18 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
python add_argument()用法解析
2020/01/29 Python
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
尤为Wconcept中国官网:韩国设计师品牌服饰
2019/01/10 全球购物
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
高分子材料与工程专业推荐信
2013/12/01 职场文书
博士学位自我鉴定范文
2013/12/26 职场文书
高中化学教学反思
2014/01/13 职场文书
教师节商场活动方案
2014/02/13 职场文书
媒体宣传策划方案
2014/05/25 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
2014年团委工作总结
2014/11/13 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
请客吃饭开场白
2015/06/01 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书