1、尽量用jquery操作。
2、jquery取值时要用准确的方法,attr(), val(), text(), html().
例如: <span value="a">test</span> 取value属性值,ie下 $("span").val()可以,ff下就有问题。标准写法$("span").attr("value");
3、firefox 下最好不要直接用class筛选器,尤其是大量dom的页面,最好有多个限制,例如:$("#id .classname").val()
4、获取事件方法:
IE:window.event FireFox:arguments.callee.caller.arguments[0]
var e = window.event || arguments.callee.caller.arguments[0];
var srcElement = event.srcElement ? event.srcElement : event.target
如果是方法里又调用方法,最里层的方法要根据event事件处理的话。用上边方法就不行了。
用如下方法:
function getEvent() //同时兼容ie和ff的写法
{
if(document.all) return window.event;
func=getEvent.caller;
while(func!=null){
var arg0=func.arguments[0];
if(arg0)
{
if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation))
{
return arg0;
}
}
func=func.caller;
}
return null;
}
5、阻止冒泡事件:
function stopEvent() {
//var e = window.event || arguments.callee.caller.arguments[0];
var e = getEvent();
//如果提供了事件对象,则这是一个非IE浏览器
if (e && e.preventDefault) {
//阻止默认浏览器动作(W3C)
e.preventDefault();
}
else {
//IE中阻止函数器默认动作的方式
window.event.returnValue = false;
}
// if (e && e.stopPropagation) {
// // this code is for Mozilla and Opera
// e.stopPropagation();
// } else if (window.event) {
// // this code is for IE
// window.event.cancelBubble = true;
// }
}
6、监听事件
IE
document.body.attachEvent('onclick', functionname);
Firefox
document.body.addEventListener('click', functionname,false);
=============================================================
chrome 兼容性
1、var event=arguments.callee.caller.arguments[0]||window.event;//消除浏览器差异