月度归档:2010年02月

IE6下 Ajax 的一个很怪异的问题

废话不说,直接上代码.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax</title>
<script type="text/javascript">
(function(){
var ajax = function(){
var arrArguments = arguments[0];
//得到主要的参数
this.req = null;
this.url = arrArguments.url;
this.callback = arrArguments.success;
this.method = arrArguments.method?arrArguments.method:'get';
this.settimeout = arrArguments.settimeout?arrArguments.settimeout:30;
this.ajax.prototype.sendRequest();
}
ajax.prototype = {
//初始化
init:function(){
},
//创建对象
createRequestObject:function(){
if(window.XMLHttpRequest){ ? ? ? ? //Firefox Opera Safri Chrome
this.req = new window.XMLHttpRequest();
}else if(window.ActiveXObject){ ? //IE
this.req = new window.ActiveXObject("Microsoft.XMLHTTP");
}else{
throw new Error("无法创建交互对象,请重新尝试.");
return false;
}
//返回创建的Ajax对相
return this.req;
},
//发送请求
sendRequest:function(){
var req = this.createRequestObject();
if(req){
try{
req.onreadystatechange = function(){
var ready = req.readyState;
var data = null;
if(ready==4){
data = req.responseText;
this.callback(data); ?//回调函数
//this.req = null;
}
}
req.open(method,url,true);
req.send(null);
}catch(e){
throw new Error(e);
return false;
}
}
}
}
window.ajax = ajax;
})();
ajax({
url:'http://192.168.0.111:8000/demo/Ajax/aaa.txt',
settimeout:'30',
method:'get',
success:methodA
});
function methodA(data){
alert(data);
}
</script>
</head>
<body>
</body>
</html>

其中在这里
if(ready==4){
data = req.responseText;
this.callback(data); //回调函数
//this.req = null;
}
这个this在IE6下居然是 Window.而其他浏览器都是XMLHTTP对象!难道这个也是IE6的BUG?

大家一起来环保

今天收看了一个短片,大致的内容描述的是最近几年由于气候变暖导致的全球温室效应问题.我们的地球正在遭受着巨大的损伤.各国政府部门在哥本哈根的会议也像足了一场闹剧.无休止的争吵到底能带给这个世界什么?

湘江的水越来越少了,我身边的树也越来越少了.取而代之的是一栋栋高耸的房子,实在不明白,人为什么能为了自己的利益,而去损害子孙后代的利益,难道将来大家都不打算要后代?富不过三代,难道我们留给后背的就只有满目疮痍的地球?

说实在话,我是非常反对政府限制电动车的,说电动车容易引发交通事故,这个只是一个方面,但是我觉得政府完全可以控制厂家限制电动车的速度,而不是在数量上限制电动车.它是一个非常清洁的交通工具,绿色无污染.相对的限制数量,不就引发了小汽车的激增么???越来越多的尾气排放出来,难道咱就是为了GDP的增长,等到50-100年后花10倍的价钱再去治理么?

我希望大家能少用一包包的餐巾纸,少用一点办公用纸,多乘坐公交车.用一些力所能及的事情,来挽救我们的地球,毕竟地球只有一个,失去了,就没有后悔的余地了.

CSS hack 的文章

因为之前的公司都是应对在IE以及FF下,对IE6,IE7,FF做的多了. Safari,Google Chrome以及Opera的测试下做的少得去了…(万恶的IE6,狠狠的鄙视一下).看到阿里前端工程师zergine写的一片关于CSS hack整理的文章,觉得很不错,收藏下,共享给所有的前端工程师.

以下是正文内容

—————————————————————————–

CSSHack是在标准CSS没办法兼容各浏览器显示效果时才会用上的补救方法,在各浏览器厂商解析CSS没有达成一致前,我们只能用这样的方法来完成这样的任务.
我进行前端开发的时候,测试用的浏览器大致有:IE7,IE6,Opera9(文章撰写时版本为9.258825),Safari3(文章撰写时版本为3.0.4523.15),Firefox2(文章撰写时版本为2.0.0.11).
在正常的selector{property:value;}的基础上常会根据具体情况为相同元素使用Hack以达到浏览器间统一.
IE系列:
selector{+property:value;}在属性名前加上加号”+”,这个Hack只有IE系列可以识别.
selector{*property:value;}在属性名前加上星号”*”,这个Hack只有IE系列可以识别.
selector{_property:value;}在属性名前加上下划线”_”,这个Hack只有IE系列(除IE7外)识别.
*htmlselector{property:value;}在选择器上运用继承法*htmlselector,这个Hack只有IE系列(除IE7外)可以识别.
html/**/>bodyselector{property:value;}在选择器上运用继承法html/**/>bodyselector,这个Hack只有IE系列(除IE7外)可以识别.
selector{property/**/:value;}在属性名和冒号”:”之间加入注释,屏蔽IE6用.
selector/**/{property/**/:value;}在选择器和花括号”{“之间以及在属性名和冒号”:”之间加入注释,屏蔽IE5和IE6用(不屏蔽IE5.5).
select/**/{property:value;}在选择器和花括号”{“之间加入注释,屏蔽IE5用.
*+htmlselector{property:value!important;}在选择器上运用继承法*+htmlselector再加上!important,这个Hack只有IE7可以识别.
Firefox:
Safari:
selector:empty{property:value!important;}用伪类empty再加上!important进行定义的话,目前只有Safari可以识别.
Opera:
@mediaalland(min-width:0px){selector{property:value;}}利用特殊继承法进行定义的话,目前只有Opera可以识别.
以上的Hack并不完整,大家一起补充.
对Hack的运用,最普遍的是CSS盒模型Hack,清除浮动Hack.
CSS盒模型在IE5.X上是有严重解析错误的.这个Hack针对IE5.X:
selctor{width:IE5.X宽度;voice-family:”/”}/””;voice-family:inherit;width:正确宽度;}
清除浮动Hack,相信这个定义用的人很多:
selector:after{content:”.”;display:block;height:0;clear:both;visibility:hidden;}

Object 类

Object 类, 自身用处不大.ECMAScript中的所有的类都由这个类继承而来,Object类中的所有属性和方法都会出现在其他类中.理解Object类,就能更好的理解其他的类.

Object 的属性

———————————————————–

Constructor — 创建对象函数的引用(指针)对于Object类,该指针指向原始的Object()函数.

Prototype — 该对象原型的引用.所有的类,默认返回 Object 对象的一个实例.

Object 的方法

———————————————————-

HasOwnProperty(prototype) 判断对象是否有某个特定的属性.必须用字符串指定该属性 (o.hasOwnPrototype(‘ss’)) 判断是否具备某个属性.

isPrototypeOf(Object) — 判断该对象是否为另一个对象的原型.

PrototypeIsEnumerable(prototype) — 判断给定的属性是否可以用for..in语句进行枚举

ToString() … ?这个就不用说了吧.

ValueOf() 返回最符适合对象的原始值,对于许多类,该方法防护的值都与toString()的返回值相同.