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;
}
}
note0411-javascript
最新推荐文章于 2022-10-25 18:03:11 发布