IE firefox 兼容性整理
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;//消除浏览器差异
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端