让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树形控件脚本代码
Jul 24 Javascript
javascript通过class来获取元素实现代码
Feb 20 Javascript
不使用浏览器运行javascript代码的方法
Jul 24 Javascript
js控制当再次点击按钮时的间隔时间
Jun 03 Javascript
javascript 处理null及null值示例
Jun 09 Javascript
JavaScript实现节点的删除与序号重建实例
Aug 05 Javascript
jQuery+ajax+asp.net获取Json值的方法
Jun 08 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
Nov 16 Javascript
jquery结合html实现中英文页面切换
Nov 29 Javascript
基于jQuery实现瀑布流页面
Apr 11 jQuery
VUE使用vuex解决模块间传值问题的方法
Jun 01 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
Jan 21 jQuery
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 serialize()与unserialize()的用法
2013/06/05 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
驱动事件的addEvent.js代码
2007/03/27 Javascript
javascript来定义类的规范小结
2010/11/19 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
浅谈python可视化包Bokeh
2018/02/07 Python
Python爬虫beautifulsoup4常用的解析方法总结
2019/02/25 Python
python3使用GUI统计代码量
2019/09/18 Python
python系列 文件操作的代码
2019/10/06 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
用Python写一个for循环的例子
2016/07/19 面试题
出国留学自荐信
2013/10/25 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
教师节倡议书2015
2015/04/27 职场文书
联欢会开场白
2015/06/01 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
Python内置数据结构列表与元组示例详解
2021/08/04 Python