note0411-javascript

1.兼容性事件绑定
EventUtil = {
	
	/* 注册事件 */
	addHandler : function(ele,type,handle){
		if(ele.addEventListener){
			ele.addEventListener(type,handle,false);
		}else if(ele.attachEvent){
			ele.attachEvent('on' + type,handle);
		}else{
			ele['on' + type] = handle;
		}
	}

	/* 移除事件 */
	removeHandler : function(ele,type,handle){
		if(ele.removeListener){
			ele.removeListener(type,handle,false);
		}else if(ele.detachEvent){
			ele.detachEvent('on' + type,handle);
		}else{
			ele['on' + type] = null;
		}
	}
}

2.兼容性事件获取、冒泡和默认事件处理
EventUtil = {
	/* 获取事件对象 */
	getEvent : function(event){
		return event ? event : window.event;
	},

	/* 获取事件对象源(html) */
	getTarget : function(event){
		return event.target || event.srcElement;
	},
	
	/* 阻止默认事件 */
	preventDefault : function(event){
		if(event.preventDefault){
			event.preventDefault();
		}else{
			event.returnValue = false;
		}
	},

	/* 阻止事件冒泡 */
	stopPropagation : function(event){
		if(event.stopPropagation()){
			event.stopPropagation();
		}else{
			event.cancelBubble = true;
		}
	}
}

3.适用于IE7以前的XMLHttpRequest对象创建
var createXHR = function(){
	if(typeof XMLHttpRequest != 'undefined'){
		return new XMLHttpRequest();
	}else if(typeof ActiveXObject != 'undefined'){
		/* 兼容IE */
		if(typeof arguments.callee.activeXString != 'string'){
			var versions = ['MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp'],
				i,len;
			for(i = 0;i < versions.length;i ++){
				try{
					new ActiveXObject(versions[i]);
					arguments.callee.activeXString = versions[i];
					break;
				}catch(ex){

				}
			}
		}
		return new ActiveXObject(arguments.callee.activeXString);
	}else{
		throw new Error('no XHR object..');
	}
}
3.1优化创建XHR对象的方法
3.1.1覆盖函数的方式
var createXHR = function(){
	if(typeof XMLHttpRequest != 'undefined'){
		createXHR = function(){
			return new XMLHttpRequest();
		}
	}else if(typeof ActiveXObject != 'undefined'){
		/* 兼容IE */
		createXHR = function(){
			if(typeof arguments.callee.activeXString != 'string'){
				var versions = ['MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp'],
					i,len;
				for(i = 0;i < versions.length;i ++){
					try{
						new ActiveXObject(versions[i]);
						arguments.callee.activeXString = versions[i];
						break;
					}catch(ex){

					}
				}
			}
			return new ActiveXObject(arguments.callee.activeXString);
		}

	}else{
		createXHR = function(){
			throw new Error('no XHR object..');
		}
	}
	return createXHR();
}
3.1.2匿名函数的方式
var createXHR = (function(){
	if(typeof XMLHttpRequest != 'undefined'){
		return function(){
			return new XMLHttpRequest();
		}
	}else if(typeof ActiveXObject != 'undefined'){
		/* 兼容IE */
		return function(){
			if(typeof arguments.callee.activeXString != 'string'){
				var versions = ['MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp'],
					i,len;
				for(i = 0;i < versions.length;i ++){
					try{
						new ActiveXObject(versions[i]);
						arguments.callee.activeXString = versions[i];
						break;
					}catch(ex){

					}
				}
			}
			return new ActiveXObject(arguments.callee.activeXString);
		}

	}else{
		return function(){
			throw new Error('no XHR object..');
		}
	}
})()

4.js读取文件
4.1FileReader读取完整文件
4.1.1readAsText(file[,encoding]),以纯文本形式读取文本
4.1.2readAsDataURI(file),读取文本并将文件以数据URI的格式保存到result属性中
4.1.3readAsBinaryString(file),读取文件并将一个字符串保存在result属性中,字符串中的每一个字符表示一字节
4.1.4readAsArrayBuffer(file),读取文件并将一个包含文件内容的ArrayBuffer保存在result中

4.2File对象slice方法读取文件部分内容,Firefox支持mozSlice,Chrome支持webkieSlice不同实现,相同结果
兼容性实现
var blobSlice = function(blob,startByte,length){
	if(blob.slice){
		return blob.slice(startByte,length);
	}else if(blob.webkitSlice){
		return blob.webkitSlice(startByte,length);
	}else if(blob.mozSlice){
		return blob.mozSlice(startByte,length);
	}else{
		return null;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值