让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的25个步骤 千倍级效率提升
Feb 11 Javascript
javascript结合canvas实现图片旋转效果
May 03 Javascript
JQuery实现动态添加删除评论的方法
May 18 Javascript
XML文件转化成NSData对象的方法
Aug 12 Javascript
jquery Easyui快速开发总结
Aug 20 Javascript
laydate.js日期时间选择插件
Jan 04 Javascript
jQuery选择器特殊字符与属性空格问题
Aug 14 jQuery
JavaScript 判断对象中是否有某属性的常用方法
Jun 14 Javascript
vue动态改变背景图片demo分享
Sep 13 Javascript
JS利用prototype给类添加方法操作详解
Jun 21 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
Sep 09 Javascript
Vue实现PC端靠边悬浮球的代码
May 09 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脚本数据库功能详解(上)
2006/10/09 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
php限制上传文件类型并保存上传文件的方法
2015/03/13 PHP
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
jquery提交form表单简单示例分享
2014/03/03 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
Python切片用法实例教程
2014/09/08 Python
Python中的引用和拷贝浅析
2014/11/22 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
瑞士国际航空官网:SWISS
2016/07/21 全球购物
澳大利亚在线性感内衣商店:Fantasy Lingerie
2021/02/07 全球购物
天游软件面试
2013/11/23 面试题
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
事务机电主管工作职责
2014/02/25 职场文书
美容院经理岗位职责
2014/04/03 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2015毕业实习推荐信
2015/03/23 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers