错误处理与调试[中]

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>9:42</title>
<script>
    //跨浏览器添加事件
function addEvent(obj,type,fn){
    if(obj.addEventListener){
        obj.addEventListener(type,fn,false);
    }else if(obj.attachEvent){
        obj.attachEvent('on'+type,fn);
    }
}
//跨浏览器移除事件
function removeEvent(obj,type,fn){
    if(obj.removeEventListener){
        obj.removeEventListener(type,fn,false);
    }else if(obj.detachEvent){
        obj.detachEvent('on'+type,fn);
    }
}
//跨浏览器阻止默认行为
function preDef(evt){
    var e=evt||window.event;
    if(e.preventDefault){
        e.preventDefault();
    }else{
        e.returnValue=false;
    }
}
//跨浏览器获取目标对象
function getTarget(evt){
    if(evt.target){  //W3C
        return evt.target;
    }else if(window.event.srcElement){ //IE
        return window.event.srcElement;
    }
}

//跨浏览器获取字符编码
function getCharCode(evt){
    var e=evt||window.event;
    if(typeof e.charCode=='number'){
        return e.charCode;
    }else {
        return e.keyCode;
    }
}


    // addEvent(window,'error',function(){
    //     alert('程序发生错误了!');
    // });
    // new 10;

// ---------------------------------------------------------------

// var box=0;
// if(typeof box == 'number'){
//     alert(box);
// }
// PS: typeof box 返回的是类型的字符串,右边呢,'number' 本身就是字符串,所以用相等就够了,因为相等比全等要快,因为不需要比较类型
// 类型是一样的,就没有必要用全等了

// ---------------------------------------------------------------

// function getQuerystring(url){
//     if(typeof url=='string'){
//         var pos=url.indexOf('?');
//         return pos;
//     }else{
//         return '数据类型错误!';
//     }
// }

// alert(getQuerystring('demo2.html?id=5'));
// alert(getQuerystring(1));

// ---------------------------------------------------------------

// function sortArray(arr){
//     if(typeof arr.sort=='function'){
//         arr.sort();
//         arr.reverse();
//         return arr;
//     }else {
//         return '数据出错';
//     }
// }

// var box={
//     sort:function(){

//     }
// };
// alert(sortArray(box));
//PS: 如果我模拟了数组的sort方法的对象,就能绕过判断
//PS: typeof arr.sort=='function'判断还会导致两个错误,null,模拟sort方法的对象


// function sortArray(arr){
//     if(arr instanceof Array){
//         arr.sort();
//         arr.reverse();
//         return arr;
//     }else {
//         return '数据出错';
//     }
// }

// var box={
//     sort:function(){

//     }
// };
//var box=[2,8,5];
// alert(sortArray(box));

// -----------------------------------------------------------------
// 解决通信错误
// 在使用url进行参数传递时,经常会传递一些中文名的参数或URL地址,在后台处理时会发生转换乱码或错误,因为不同的浏览器对传递的参数解释是不同的,所以有必要使用编码进行统一传递。

alert('?user='+encodeURI('张三'));  //?user=%E5%BC%A0%E4%B8%89

</script>
</head>
<body>
<img src="buy.gif" onerror="alert('图片加载失败!')" />
</body>
</html>

 

posted @ 2017-09-18 17:29  耿鑫  阅读(88)  评论(0编辑  收藏  举报