JavaScript自习笔记(兼容性)

1)获取样式元素样式/对元素样式进行操作
(obj.style.属性) 只能获取行间样式,往往我们不会把CSS样式放在行间操作。

if(obj.currentStyle)
     {
//         IE支持
         obj.currentStyle.属性
     }
     {
//         FF支持 第二个参数为虚参数,貌似写什么都行,低版本的FF需要,高版本第二个参数可以不写
         getComputedStyle(obj,'').属性
     }

2)DOM 节点(选择子节点)
(1、元素节点(Element Node)、2、属性节点(Attribute Node)、3、文本节点(Text Node)…共12种)
在进行子查询时考虑到 浏览器的兼容性问题应

for(i=0;i<obj.childNodes.length;i++)
    if(obj.childNodes[i].nodeType==1)
    //判断原因:FF(火狐)计算子节点时包括文本节点
    {
        obj.childNodes[i]+操作
    }
}

也可以用children来取第一层的子节点。

首尾子节点和相邻节点
同样,因为IE和FF的DOM兼容性问题,也要进行判断在使用。或者用||来选择

//方法一
//               FF Chrome        IE
obj.firstElementChild?obj.firstElementChild+操作:obj.firstChild+操作
//方法二
var oFirst=obj.firstElementChild||obj.firstChild;
再对 oFirst进行操作。

//FF Chrome        IE
firstElementChild     firstChild
lastElementChild      lastChild
nextElementSibling    nextSibling
previousElementSibling  previousSibling

这里的写法让我想到一道面试题,见附2。

3)class选择

//  FF Chrome 直接可以使用 
document.getElementsByClassName('cName');
// IE 不支持
var obj =docment.getElementByTagName('*');//先选出所有元素,再判断className
for(var i=0;i<obj.length;i++)
       {
           if(obj[i].className=='cName')
           oLi[i].style.backgroundColor='red';
       }

4)scrollTop 值

document.documentElement.scrollTop // IE FF           Chrome中虽然不报错,但始终是0
document.body.scrollTop// Chrome      IE中是0 FF

var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;

未完待续…

附加知识:
附1:
HTML DOM节点类型:

  • const unsigned short  ELEMENT_NODE = 1;      //元素节点
  • const unsigned short  ATTRIBUTE_NODE = 2;     //属性节点
  • const unsigned short  TEXT_NODE = 3;        //文本节点
  • const unsigned short  CDATA_SECTION_NODE = 4;     //CDATA节点
  • const unsigned short  ENTITY_REFERENCE_NODE = 5;    //实体引用名称节点
  • const unsigned short  ENTITY_NODE = 6;          //实体名称节点
  • const unsigned short  PROCESSING_INSTRUCTION_NODE = 7; //处理指令节点
  • const unsigned short  COMMENT_NODE = 8;       //注释节点
  • const unsigned short  DOCUMENT_NODE = 9;        //文档节点
  • const unsigned short  DOCUMENT_TYPE_NODE = 10;     //文档类型节点
  • const unsigned short  DOCUMENT_FRAGMENT_NODE = 11;   //文档片段节点
  • const unsigned short  NOTATION_NODE = 12;      //DTD声明节点

例如判断某节点类型可以用 *.nodeType==
当然你也可用用 *.nodeTypeName
DOM定义了一个Node接口,这个接口在javascript中是作为Node类型实现的,而在IE8-浏览器中的所有DOM对象都是以COM对象的形式实现的。所以,IE8-浏览器并不支持Node对象的写法。

附2:

alert(1||2);
alert(1&&2);
请问输出结果?
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Javascript的性能和兼容性是开发需要关注的两个重要方面。 性能方面,Javascript的性能主要受到以下因素的影响: 1.代码质量:好的代码质量能够提高Javascript的性能,包括良好的编程习惯、避免重复计算、优化循环等。 2.算法和数据结构:选择合适的算法和数据结构能够提高Javascript的性能,例如使用哈希表、二分查找等。 3.网络延迟:Javascript的性能还受到网络延迟的影响,因此可以通过减少网络请求、使用CDN等方式来提高性能。 4.浏览器环境:不同的浏览器Javascript支持程度不同,因此需要在开发考虑到不同浏览器的性能问题。 兼容性方面,Javascript兼容性主要受到以下因素的影响: 1.浏览器兼容性:不同的浏览器Javascript支持的程度不同,因此需要编写兼容性代码来保证在不同浏览器上的兼容性。 2.平台兼容性Javascript不仅可以运行在浏览器,还可以运行在移动端、桌面端等不同平台上,因此需要考虑到不同平台的兼容性问题。 3.版本兼容性Javascript的不同版本之间也存在兼容性问题,因此需要在开发考虑到不同版本之间的兼容性问题。 为了提高Javascript的性能和兼容性,可以采取以下措施: 1.合理使用缓存机制,减少网络请求次数。 2.避免不必要的DOM操作,减少渲染次数。 3.使用事件委托等技术,减少事件绑定次数。 4.编写兼容性代码,考虑到不同浏览器、平台和版本之间的兼容性问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值