码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript的DOM_其他的扩展

时间:2015-06-19 21:33:53      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

一、呈现模式

  从 IE6 开始开始区分标准模式和混杂模式(怪异模式),主要是看文档的声明。

  IE 为document 对象添加了一个名为 compatMode 属性,这个属性可以识别 IE 浏览器的文档处于什么模式,如果是标准模式,则返回 CSS1Compat,如果是混杂模式则返回 BackCompat。

<script>
    window.onload =function(){
        alert(document.compatMode);//文档声明没错就是标准模式,去掉文档声明就变成怪异模式
    }
</script>
<script>
     window.onload =function(){
        if (document.compatMode == ‘CSS1Compat‘) {
            alert(document.documentElement.clientWidth);//如果是混杂模式下IE6,7,8为0,其他正常
        } else {
            alert(document.body.clientWidth);//如果是混杂模式下用这个方法可以使IE也是正常的
        }
    }
</script>

  后来 Firefox、Opera 和 Chrome 都实现了这个属性。从 IE8 后,又引入 documentMode新属性,因为 IE8 有 3 种呈现模式分别为标准模式 8,仿真模式 7,混杂模式 5。

  所以如果想测试 IE8 的标准模式,就判断 document.documentMode > 7 即可。

 

 

 

 

 

 二、滚动

  DOM 提供了一些滚动页面的方法,如下:

<script>
     window.onload =function(){
        var box = document.getElementById("box");
        box.scrollIntoView();             //设置指定可见,当下面的内容需要将滚动条拉下来才可以看到的时候,只用该方法,当刷新页面的时候滚动条会自动下来,从而看到下面的内容
     };
</script>
</head>
<body>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p><p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <div id="box">测试Div</div>
</body>

 

 

 

 

 

三、children 属性

  由于子节点空白问题,IE 和其他浏览器解释不一致。虽然可以过滤掉,但如果只是想得到有效子节点,可以使用 children 属性,支持的浏览器为:IE5+、Firefox3.5+、Safari2+、Opera8+和 Chrome,这个属性是非标准的。

<script>
     window.onload =function(){
        var box = document.getElementById("box");
        alert(box.children.length); //得到有效子节点数目
        alert(box.children[0]);//获取第一个有效子节点
        alert(box.children[0].nodeName);
     };
</script>
</head>
<body>
<div id="box">
    <p>测试Div</p>
    <p>测试Div</p>
    <p>测试Div</p>
</div>
</body>

 

 

 

 

 

 

四、contains()方法

  判断一个节点是不是另一个节点的后代,我们可以使用 contains()方法。这个方法是 IE率先使用的,开发人员无须遍历即可获取此信息。火狐旧版本不支持,苹果3.0及以上才支持

<script>
     window.onload =function(){
        var box = document.getElementById("box");
        var p = box.firstChild;
        alert(box.contains(p));//判断box是不是p的父节点
     };
</script>
</head>
<body>
<div id="box"><p>测试Div</p></div>
</body>

  在 Firefox 的 DOM3 级实现中提供了一个替代的方法 compareDocumentPosition()方法。这个方法确定两个节点之间的关系。

<script>
     window.onload =function(){
        var box = document.getElementById("box");
        var p = box.firstChild;
        alert(box.compareDocumentPosition(p));//20
     };
</script>
</head>
<body>
<div id="box"><p>测试Div</p></div>
</body>

  为什么会出现 20,那是因为满足了 4 和 16 两项,最后相加了。为了能让所有浏览器都可以兼容,我们必须写一个兼容性的函数。

  技术分享

 

JavaScript的DOM_其他的扩展

标签:

原文地址:http://www.cnblogs.com/LO-ME/p/4589716.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!