`
chinahotdog
  • 浏览: 12787 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

典型的javascript兼容问题

阅读更多

//一些常见的兼容性问题,仅供参考

一 nextSibling

<ul>
    <li id="item1"></li>
    <li id="item2"></li>
    <li id="item3"></li>
</ul>
<script type="text/JavaScript">
    var item1 = document.getElementById("item1");
    alert(item1.nextSibling.nodeType);
    alert(document.getElementsByTagName("ul")[0].childNodes.length);
</script>

  

//IE下弹出1和3 表明item1的nextSibling类型为DOM节点,ul里的子节点个数3

//Firefox弹出3和7,表明item1的nextSibling类型为文本节点,ul里的子节点个数7

<script type="text/javascript">
    function getNextNode(node) {
        node = typeof node == "string" ? document.getElementById(node) : node;
        var nextNode = node.nextSibling;
        if (!nextNode) return null;
        if (!document.all) {
            while (true) {
                if (nextNode.nodeType == 1) {
                    break;
                } else {
                    if (nextNode.nextSibling) {
                        nextNode = nextNode.nextSibling;
                    } else {
                        break;
                    }
                }
            }
        }
        return nextNode;
    }
    var nextNode = getNextNode("item1");
    alert(nextNode.id);
    var nextNode2 = getNextNode("item2");
    alert(nextNode2.id);
</script>

 

 

二 透明度

IE下透明度是用滤镜实现的,而在Firefox下CSS的opactity属性实现的。

 <style type="text/CSS">

    #test1 {

        background: blue;

        height: 100px;

    }

 

    #test2 {

        background: green;

        height: 100px;

    }

</style>

<div id="test1"></div>

<div id="test2"></div>

<script type="text/JavaScript">

    function setOpacity(node, level) {

        node = typeof node == "string" ? document.getElementById(node) : node;

        if (document.all) {

            node.style.filter = 'alpha(opacity=' + level + ')';

        } else {

            node.style.opacity = level / 100;

        }

    }

    setOpacity("test1", 20);

    setOpacity("test2", 80);

</script>

 

三 event对象

IE下event对象作为window的属性作用于全局的,Firefox中,event对象是作为事件对象的参数存在的。

代码清单 兼容 IE 和 firefox 的 event 对象 

<input id="wrapper" type="button" value="click me"/>

<span id="span">hello world</span>

<script type="text/JavaScript">

    function getEventTarget(e) {

        // 下面可以用e来做点什么事,e在IE和Firefox下都指向了event对象 

        e = window.event || e;

        // 兼容 srcElement 和 target 

        var host = e.srcElement || e.target;

        return host ;

    }

    document.getElementById("wrapper").onclick = function(e) {

        var node = getEventTarget(e);

        alert(node.tagName);

    }

    document.getElementById("span").onclick = function(e) {

        var node = getEventTarget(e);

        alert(node.tagName);

    }

</script>

 

// 阻止事件冒泡

<script type="text/JavaScript">

    function stopPropagation(e) {

        e = window.event || e;

        if (document.all) { // only for IE

            e.cancelBubble = true;

        } else {

            e.stopPropagation();

        }

    }

</script>

 

// 绑定事件

<script type="text/JavaScript">

    function on(node, eventType, handler) {

        node = typeof node == "string" ? document.getElementById(node) : node;

        if (document.all) { // only for IE

            node.attachEvent("on" + eventType, handler);

        } else {

            node.addEventListener(eventType, handler, false);

        }

    }

</script>

分享到:
评论

相关推荐

    最全的CSS浏览器兼容问题

    【CSS浏览器兼容问题详解】 在Web开发中,CSS(层叠样式表)是用于控制网页元素样式的关键技术,但它在不同浏览器之间的兼容性问题一直是开发者面临的挑战。以下是一些常见的CSS浏览器兼容问题及其解决策略: 1. *...

    javascript 旋转时钟 使用rotate属性 transform 兼容版本

    在JavaScript和CSS3的世界里,实现一个旋转时钟是一个典型的动画效果应用。本文将深入探讨如何使用`rotate`属性和`transform`函数在JavaScript中创建一个兼容多种浏览器的旋转时钟。 首先,让我们理解`transform`这...

    div+css浏览器兼容问题

    在探讨“div+css浏览器兼容问题”这一主题时,我们首先需要理解,浏览器兼容性问题主要源于不同浏览器对Web标准的解析和实现存在差异。这不仅包括主流浏览器如Chrome、Firefox、Safari、Edge以及IE(尤其是IE6)之间...

    CSS浏览器兼容问题整理

    ### CSS浏览器兼容问题整理 #### 一、引言 在前端开发过程中,浏览器兼容性问题一直是开发者们关注的重点之一。由于不同的浏览器对于CSS的支持程度不一,这导致了许多原本简单的样式实现起来却变得异常复杂。本文...

    JavaScript典型应用与最佳实践-源代码

    在深入探讨JavaScript的典型应用与最佳实践之前,我们先来了解一下JavaScript的基本特性。 JavaScript是一种解释型的、弱类型的、基于原型的语言,支持事件驱动、函数式以及面向对象的编程风格。其主要应用领域包括...

    基于 JavaScript 语言的快速物联网开发架构.pdf

    "困境"章节可能讨论了在 IoT 开发中使用 JavaScript 面临的挑战,比如性能、实时性、设备兼容性等问题。而“互联网中的JavaScript”和“物联网呢?”则可能对比了 JavaScript 在传统互联网应用和 IoT 解决方案中的...

    JavaScript设计模式Demo

    在JavaScript中,事件监听器和事件触发就是典型的观察者模式应用。 4. **策略模式**:定义一系列算法,并将每个算法封装起来,使它们可以相互替换。在JavaScript中,这常用于处理条件分支,让代码更易于理解和维护...

    javascript图片完全固定在左、右、上、下,兼容IE6

    ### JavaScript 图片完全固定在左右两边,兼容IE6的知识点 #### 一、问题背景与需求分析 在早期的浏览器版本中,特别是 Internet Explorer 6 (IE6),很多 CSS 特性并不支持或者存在兼容性问题。其中,“position: ...

    javascript仿2015汽车之家首页焦点图,可灵活自定义,兼容主流浏览器

    5. **兼容性处理**:由于不同的浏览器对某些JavaScript特性支持程度不同,开发者需要考虑兼容性问题。这可能涉及到使用像jQuery这样的库,或者采用特征检测(feature detection)来确保代码在各种环境下都能正常工作...

    DIV+CSS相对IE6、IE7和IE8的兼容问题

    以上就是针对`DIV+CSS`在IE6、IE7和IE8中遇到的一些典型兼容性问题及其解决策略。在实际开发中,还需要注意其他一些CSS属性,如`hasLayout`、`zoom`、`filter`等,它们在IE中也有独特的行为。解决这些问题通常需要对...

    兼容jq_ecshop

    在IT行业中,兼容性和插件使用是至关重要的环节。标题"兼容jq_ecshop"表明我们关注的是一个与jQuery(简称jq)...这个过程涉及到JavaScript编程、DOM操作、事件处理、性能优化等多个方面,是Web开发中一个典型的挑战。

    dom和javascript关系

    因此,开发者在编写JavaScript代码时需要考虑到跨浏览器兼容性问题。 在实际应用中,DOM和JavaScript的结合使得网页动态化成为可能。例如,通过JavaScript和DOM,我们可以实现用户交互功能,如响应按钮点击事件,...

    IE6-IE11兼容性问题列表及解决办法

    首先,我们来关注IE6的一些典型问题。IE6对于CSS的支持非常有限,例如不支持浮动元素的`clear:both`属性,不理解`min-height`和`max-height`,且对盒模型的理解与W3C标准不符,导致布局混乱。解决这些问题通常需要...

    JavaScript动态网页跑马灯图片

    "JavaScript动态网页跑马灯图片"是一个典型的JavaScript应用场景,它利用JavaScript来实现在网页上展示一组图片,并且这些图片能够按照设定的效果进行动态显示,如自动循环滚动或在鼠标悬停时暂停滚动。跑马灯效果...

    javascript经典特效---移动的导航菜单.rar

    在实现移动的导航菜单时,我们还需要考虑到不同设备和浏览器的兼容性问题。为了确保在各种环境下都能正常工作,可能需要引入像jQuery这样的库,它提供了跨浏览器的API,简化了DOM操作和事件处理。当然,对于现代项目...

    Javascript 设计模式

    JavaScript的`EventEmitter`和`addEventListener/removeEventListener`是典型的实现。 9. **策略模式**:定义一系列的算法,将每一个算法封装起来,让它们可以相互替换。在JavaScript中,可以利用函数或者对象字面...

    用来解决iejson不兼容的js

    由于IE对某些标准的支持不够完善,开发者经常需要面对一些兼容性问题,其中JSON(JavaScript Object Notation)的支持就是一个典型例子。 标题中的"用来解决iejson不兼容的js"指的是为了解决IE浏览器在处理JSON时...

Global site tag (gtag.js) - Google Analytics