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 相关文章推荐
如何防止回车(enter)键提交表单
May 11 Javascript
php实例分享之实现显示网站运行时间
May 20 Javascript
js中函数声明与函数表达式
Jun 03 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 Javascript
canvas仿iwatch时钟效果
Mar 06 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
May 17 Javascript
echarts整合多个类似option的方法实例
Jul 10 Javascript
vue移动端弹框组件的实例
Sep 25 Javascript
Vuex 单状态库与多模块状态库详解
Dec 11 Javascript
继承行为在 ES5 与 ES6 中的区别详解
Dec 24 Javascript
jQuery开发仿QQ版音乐播放器
Jul 10 jQuery
angular4实现带搜索的下拉框
Mar 25 Javascript
关于恒等于(===)和非恒等于(!==)
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
Linux下php5.4启动脚本
2014/08/03 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
20个非常棒的Jquery实用工具 国外文章
2010/01/01 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
轻松创建nodejs服务器(2):nodejs服务器的构成分析
2014/12/18 NodeJs
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
Python实现字典依据value排序
2016/02/24 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
Python二进制串转换为通用字符串的方法
2018/07/23 Python
一百行python代码将图片转成字符画
2021/02/19 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
python爬虫请求头的使用
2020/12/01 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
大学生个人自我鉴定
2013/12/03 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
人身损害赔偿协议书
2016/03/22 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
DQL数据查询语句使用示例
2022/12/24 MySQL