错误处理与调试[中]
<!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>