让IE8浏览器支持function.bind()方法


Posted in Javascript onOctober 16, 2014

IE8支持function.bind()方法

<script type="text/javascript"> 
if (!Function.prototype.bind) { 
Function.prototype.bind = function (oThis) { 
if (typeof this !== "function") { 
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); 
} 
var aArgs = Array.prototype.slice.call(arguments, 1), 
fToBind = this, 
fNOP = function () {}, 
fBound = function () { 
return fToBind.apply(this instanceof fNOP && oThis 
? this 
: oThis, 
aArgs.concat(Array.prototype.slice.call(arguments))); 
}; 
fNOP.prototype = this.prototype; 
fBound.prototype = new fNOP(); 
return fBound; 
}; 
} 
</script>

主要解决“百度地图”官网上的例子的bug,摘取如下代码:

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<style type="text/css"> 
body, html {width: 100%;height: 100%;margin:0;font-family:"微软雅黑";} 
#allmap{width:100%;height:500px;} 
p{margin-left:5px; font-size:14px;} 
</style> 
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=39b92e64ae5622663ceceaccd8ab8eb1"></script> 
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> 
<title>给多个点添加信息窗口</title> 
<script type="text/javascript"> 
if (!Function.prototype.bind) { 
Function.prototype.bind = function (oThis) { 
if (typeof this !== "function") { 
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); 
} 
var aArgs = Array.prototype.slice.call(arguments, 1), 
fToBind = this, 
fNOP = function () {}, 
fBound = function () { 
return fToBind.apply(this instanceof fNOP && oThis 
? this 
: oThis, 
aArgs.concat(Array.prototype.slice.call(arguments))); 
}; 
fNOP.prototype = this.prototype; 
fBound.prototype = new fNOP(); 
return fBound; 
}; 
} 
</script> 
</head> 
<body> 
<div id="allmap"></div> 
<p>点击标注点,可查看由纯文本构成的简单型信息窗口</p> 
</body> 
</html> 
<script type="text/javascript"> 
// 百度地图API功能 
map = new BMap.Map("allmap"); 
map.centerAndZoom(new BMap.Point(116.417854,39.921988), 15); 
var data_info = [[116.417854,39.921988,"地址:北京市东城区王府井大街88号乐天银泰百货八层"], 
[116.406605,39.921585,"地址:北京市东城区东华门大街"], 
[116.412222,39.912345,"地址:北京市东城区正义路甲5号"] 
]; 
var opts = { 
width : 250, // 信息窗口宽度 
height: 80, // 信息窗口高度 
title : "信息窗口" , // 信息窗口标题 
enableMessage:true//设置允许信息窗发送短息 
}; 
for(var i=0;i<data_info.length;i++){ 
var marker = new BMap.Marker(new BMap.Point(data_info[i][0],data_info[i][1])); // 创建标注 
var content = data_info[i][2]; 
map.addOverlay(marker); // 将标注添加到地图中 
marker.addEventListener("click",openInfo.bind(null,content)); 
} 
function openInfo(content,e){ 
var p = e.target; 
var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat); 
var infoWindow = new BMap.InfoWindow(content,opts); // 创建信息窗口对象 
map.openInfoWindow(infoWindow,point); //开启信息窗口 
} 
</script>
Javascript 相关文章推荐
JavaScript 学习笔记(十二) dom
Jan 21 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
Aug 30 Javascript
用Juery网页选项卡实现代码
Jun 13 Javascript
JS获取地址栏参数的小例子
Aug 23 Javascript
jquery选择器之层级过滤选择器详解
Jan 27 Javascript
了不起的node.js读书笔记之node.js中的特性
Dec 22 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
Jan 13 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
May 04 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
May 25 Javascript
javascript事件监听与事件委托实例详解
Aug 16 Javascript
使用JavaScript通过前端发送电子邮件
May 22 Javascript
公众号SVG动画交互实战代码
May 31 Javascript
jquery获取radio值(单选组radio)
Oct 16 #Javascript
js数组的基本操作(很全自己整理的)
Oct 16 #Javascript
Javascript中的关键字和保留字整理
Oct 16 #Javascript
javascript复制粘贴与clipboardData的使用
Oct 16 #Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
Oct 16 #Javascript
jquery获取radio值实例
Oct 16 #Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
Oct 16 #Javascript
You might like
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
js获取url中指定参数值的示例代码
2013/12/14 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
解析Python3中的Import
2019/10/13 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
怎么快速自学python
2020/06/22 Python
python help函数实例用法
2020/12/06 Python
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
2015秋季幼儿园开学寄语
2015/03/25 职场文书
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫