zoukankan      html  css  js  c++  java
  • IE8支持function.bind()方法

    这个 bind 方法仅仅有在 ie10 版本号的浏览器才得到原生支持,低于该版本号的浏览器下运行时会得到一个 undefined 的错误提示。于是仅仅好再次上网 google 解决方式,功夫不负有心人,我们在 firefox 的开发站找到了解决方式,那就是添加 property 原型使得全部浏览器都能支持 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 { 100%;height: 100%;margin:0;font-family:"微软雅黑";}
    		#allmap{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>
    


  • 相关阅读:
    hystrix 源码分析以及属性的配置
    golang官方包限流器使用和原理(golang.org/x/time/rate)
    pip通过指定分支和子目录从git仓库中拉取python包
    cgo使用示例总结
    python装饰器原理和用法总结
    centos7编译安装clang8(同时还会编译llvm的不少东西, 文中附带编译好的二进制压缩包)
    prometheus+alertmanager+granafa监控总结,安装基于docker-compose(长期更新)
    go条件变量的使用和原理
    canal+kafka订阅Mysql binlog将数据异构到elasticsearch(或其他存储方式)
    go对elasticsearch的增删改查
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4342506.html
Copyright © 2011-2022 走看看