JavaScript的常见兼容问题及相关解决方法(chrome/I(3)

Firefox:如果存在文档类型说明,则将其作为文档的第一个子节点,document.doctype是一个DocumentType节点,也可以通过firstChild或者childNodes[0]访问同一个节点。

Safari、Chrome、Opera:如果存在文档类型说明,则将其作为解释,但不作为文档的子节点,不会出现在childNodes中的。

11:查找元素
我有时候,我真搞不明白,IE总是在搞什么,总是想标新立异。如果系统不让自带浏览器的话,我敢说,IE的份额将会更少。

如果id和name一样的话,他也将被返回

复制代码 代码如下:


<html>
    <head>
     <script defer>
      var item=document.getElementById("my");
   item.value="SECOND";

     </script>
    </head>
    <body>
     <input type="text" value="FIRST" >
    </body>
</html>


在IE中,结果变化了。

同样是IE,Id大小写不区分

复制代码 代码如下:


<html>
    <head>
     <script defer>
      var item=document.getElementById("MY");
   item.value="SECOND";

     </script>
    </head>
    <body>
     <input type="text" value="FIRST" >
    </body>
</html>


不好意思,他的结果又变化了。

12:如果是自定义属性的话,item.myattributs在非IE浏览器的情况下,是无法得出正确结果的。

复制代码 代码如下:


function(item,myatt){
  return item.attributes[myatt].value;
 }


同样的话,设置属性应该知道怎么办吧,就是赋值呗。

复制代码 代码如下:


function(item,myatt,value){
  item.attributes[myatt].value=value;
 }


13:元素的子节点个数

复制代码 代码如下:


 <ul>
   <li>first</li>
   <li>second</li>
   <li>third</li>
  </ul>


IE结果是3,其他浏览器是7。

Node之间的空白符,在其他浏览器是文本节点,结果就是7。如果变成这样,

复制代码 代码如下:


<ul><li>first</li><li>second</li><li>third</li></ul>


这样大家的结果都是3了。
14:创立节点问题

复制代码 代码如下:


//动态添加Element,所有的浏览器都可以实现
var newnode=document.createElement("input");
newnode.type="button";
newnode.value="sixth";
//在IE中可以还这么实现
var newnode= document.createElement("<input type=\"button\">");


15:在屏蔽右键的时候,firefox与其他的不一样,在oncontextmenu事件中。

16:还有动态添加style和script的时候,IE和其他的浏览器是不一样的。具体查查。

17:对于DOM2和DOM3,情况更复杂了。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdwwsz.html