Firefox: event对象有target属性,但是没有srcElement属性。
解决办法:srcObj = event。srcElement?event。srcElement:event。target;
4。获取元素的非行间样式值
IE: dom。currentStyle[‘width’] 获取元素高度
标准浏览器:window。getComputedStyle(obj, null)['width'];
// 获取元素属性值的兼容写法
function getStyle(obj,attr){
if(obj。currentStyle){
//兼容IE
obj。currentStyle[attr];
return obj。currentStyle[attr];
}else{
//非IE,
return window。getComputedStyle(obj, null)[attr];
}
}
5。阻止事件冒泡传播
//js阻止事件传播,这里使用click事件为例
document。οnclick=function(e){
var e=e||window。event;
if (e。stopPropagation) {
e。stopPropagation();//W3C标准
}else{
e。cancelBubble=true;//IE。。。。 true: 不被上层元素的事件控制
}
}
6。阻止事件默认行为
//js阻止默认事件 一般阻止a链接href,form表单submit提交
document。οnclick=function(e){
var e=e||window。event;
if (e。preventDefault) {
e。preventDefault();//W3C标准
}else{
e。returnValue='false';//IE。。 false: 不会进行判断就直接执行下去
}
}
7。 ajax兼容问题
IE: ActiveXObject
其他: xmlHttpRequest
在IE6以前不是用XMLHttpRequest创建的,所以我们要兼容ie6以前的浏览器要判断他有没有XMLHttpRequest()
跨浏览器兼容解决方案:
<script>
window。onload = function(){
var oBtn = document。getElementById('btn');
oBtn。onclick = function(){
//1。创建ajax对象
//只支持非IE6浏览器
var oAjax = null;
if(window。XMLHttpRequest){
oAjax = new XMLHttpRequest();
//alert(new XMLHttpRequest());
}else{
//只支持IE6浏览器
oAjax = new ActiveXObject("Microsoft。XMLHTTP");
}
//2。连接服务器,这里加个时间参数,每次访问地址都不一样,浏览器就不用浏览器里的缓冲了,但
// 但服务器那端是不解析这个时间的
oAjax。open("get","a。txt?t=" + new Date()。getTime(),true);
//3。发送
oAjax。send(null);
//4。接受信息
oAjax。onreadystatechange = function(){
//浏览器与服务器之间的交互,进行到哪一步了,当等于4的时候,代表读取完成了
if(oAjax。readyState==4){
//状态码,只有等于200,代表接受完成,并且成功了
if(oAjax。status==200){
alert("成功" + oAjax。responseText);
}else{
alert("失败");
}}};};};
</script>
Js相关
JavaScript分三个部分: