让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插件开发示例代码
Nov 06 Javascript
jquery prop的使用介绍及与attr的区别
Dec 19 Javascript
jQuery实现当按下回车键时绑定点击事件
Jan 28 Javascript
浅析javascript 定时器
Dec 23 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
Jun 25 Javascript
全面解析Bootstrap表单使用方法(表单样式)
Nov 24 Javascript
js简单判断移动端系统的方法
Feb 25 Javascript
防止Node.js中错误导致进程阻塞的办法
Aug 11 Javascript
js中的DOM模拟购物车功能
Mar 22 Javascript
Vue ElementUI之Form表单验证遇到的问题
Aug 21 Javascript
Vue封装一个简单轻量的上传文件组件的示例
Mar 21 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
Sep 02 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在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
php 如何获取数组第一个值
2013/08/06 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
JS Array对象入门分析
2008/10/30 Javascript
学习ExtJS border布局
2009/10/08 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
javaScript语法总结
2016/11/25 Javascript
JavaScript的继承实现小结
2017/05/07 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
详解vue中移动端自适应方案
2019/05/05 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
Python温度转换实例分析
2018/01/17 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
Python反爬虫伪装浏览器进行爬虫
2020/02/28 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
Unix控制后台进程都有哪些进程
2016/09/22 面试题
会计专业推荐信
2013/10/29 职场文书
物流仓储计划书
2014/01/10 职场文书
消防器材管理制度
2014/01/28 职场文书
平安工地汇报材料
2014/08/19 职场文书
群众路线个人剖析材料
2014/10/07 职场文书
个人作风建设心得体会
2014/10/22 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书