让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 相关文章推荐
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
Sep 29 Javascript
js或jquery实现页面打印可局部打印
Mar 27 Javascript
调试代码导致IE出错的避免方法
Apr 04 Javascript
Javascript中浮点数相乘的一个解决方法
Jun 03 Javascript
jquery中live()方法和bind()方法区别分析
Jun 23 Javascript
JS动态加载脚本并执行回调操作
Aug 24 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
Apr 12 jQuery
javascript深拷贝、浅拷贝和循环引用深入理解
May 27 Javascript
Vue 项目分环境打包的方法示例
Aug 03 Javascript
Vue 莹石摄像头直播视频实例代码
Aug 31 Javascript
浅谈vue项目用到的mock数据接口的两种方式
Oct 09 Javascript
js实现随机圆与矩形功能
Oct 29 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 cache类代码(php数据缓存类)
2010/04/15 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
PHP使用file_get_content设置头信息的方法
2016/02/14 PHP
PHP GD库相关图像生成和处理函数小结
2016/09/30 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
js类 from qq
2006/11/13 Javascript
javascript优先加载笔记代码
2008/09/30 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
2015/03/31 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
Python判断变量是否已经定义的方法
2014/08/18 Python
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
Pycharm设置utf-8自动显示方法
2019/01/17 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
承诺书怎么写
2014/03/26 职场文书
生产助理岗位职责
2014/06/18 职场文书
投资意向书
2014/07/30 职场文书
小学国庆节活动总结
2015/03/23 职场文书
JavaScript原型链详解
2021/11/07 Javascript
动画「进击的巨人」第86话播出感谢绘公开
2022/03/21 日漫