让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 相关文章推荐
Firefox 无法获取cssRules 的解决办法
Oct 11 Javascript
javascript实现上传图片前的预览(TX的面试题)
Aug 20 Javascript
JS定时器实例
Apr 17 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
Jul 12 Javascript
用js的for循环获取radio选中的值
Oct 21 Javascript
jQuery遍历之next()、nextAll()方法使用实例
Nov 08 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
Sep 19 Javascript
JS验证图片格式和大小并预览的简单实例
Oct 11 Javascript
bootstrap中使用google prettify让代码高亮的方法
Oct 21 Javascript
javascript中Date对象的使用总结
Nov 21 Javascript
Vue中的验证登录状态的实现方法
Mar 09 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
Oct 28 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守护进程 加linux命令nohup实现任务每秒执行一次
2011/07/04 PHP
php实现天干地支计算器示例
2014/03/14 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
Prototype String对象 学习
2009/07/19 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
详细分析React 表单与事件
2020/07/08 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
Python中处理unchecked未捕获异常实例
2015/01/17 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
python基于opencv实现人脸识别
2021/01/04 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
玩具反斗城西班牙网上商城:ToysRUs西班牙
2017/01/19 全球购物
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
化工专业求职信
2014/07/01 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
《失物招领》教学反思
2016/02/20 职场文书
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫