让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 相关文章推荐
JS对URL字符串进行编码/解码分析
Oct 25 Javascript
基于jQuery实现点击同时更改两个iframe的网址
Jul 01 Javascript
Jquery插件 easyUI属性汇总
Jan 19 Javascript
jquery 与NVelocity 产生冲突的解决方法
Jun 13 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
Aug 14 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
Nov 15 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
你应该了解的JavaScript Array.map()五种用途小结
Nov 14 Javascript
JavaScript创建防篡改对象的方法分析
Dec 30 Javascript
vue项目中使用fetch的实现方法
Apr 25 Javascript
vue实现扫码功能
Jan 17 Javascript
五句话帮你轻松搞定js原型链
Dec 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
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
jQuery 性能优化指南 (1)
2009/05/21 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
javascript中this的四种用法
2015/05/11 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
node.js cookie-parser之parser.js
2016/06/06 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
微信小程序 UI布局常用技巧整理总结
2016/12/05 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
JS前端模块化原理与实现方法详解
2020/03/17 Javascript
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
在Pycharm中安装Pandas库方法(简单易懂)
2021/02/20 Python
财务会计人员岗位职责
2013/11/30 职场文书
应届毕业生求职信范文分享
2013/12/26 职场文书
大学生学业生涯规划
2014/01/05 职场文书
驻村工作先进事迹
2014/08/14 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
物业保洁员管理制度
2015/08/05 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
Python绘制分类图的方法
2021/04/20 Python
Python学习开发之图形用户界面详解
2021/08/23 Python