兼容性的问题 webfx 网站已经做了很好的尝试,他们对 IE 和 Mozilla 中 JavaScript 的差异做了很好的封装。
其实我们的 Web 开发框架移植到 Mozilla 上并不是非常困难。只是目前没有明显的经济利益刺激我们做这件事。
IE 与 Mozilla 的主要差别在于:
1、对 HTML DOM 规范的支持,IE 除了支持标准的 API,还提供了 document.all() 这个便于使用的方法。但是这个方法完全可以使用标准的 getElementById() 来替代。
2、对 XML DOM,IE 提供了 selectSingleNode() 和 selectNodes() 两个便于使用的方法,而 Mozilla 使用标准的 evaluate() 方法。解决的方法是在 Mozilla 中模拟 IE 的行为。IE 中的 XML DOM 是作为 ActiveX 插件的形式(打补丁的方式)提供的,Mozilla 则本身就支持 XML DOM。
3、IE 支持 XML Data Island,而 Mozilla 由于对 XML 有更好的支持,所以完全不需要提供 XML Data Island 这种机制。但是 Mozilla 可以模拟 IE 的 XML Data Island。
http://www.mozilla.org/xmlextras/xmldataislands/
4、对于 XMLHTTP 的支持,IE 使用 ActiveX 插件实现,Mozilla 则使用 XPCOM 组件实现。但是两者的接口是相同的。
5、访问本地文件系统的方法不同,IE 使用 ActiveX 插件,Mozilla 则使用 XPCOM 组件。
6、对于事件处理的机制完全不同,IE 采用“事件传播”(“事件起泡”)方式,Mozilla 采用“事件捕捉”方式。
问题 1、2、3、4、5 都可以通过封装的方式轻易解决,但是问题 6 要很好地封装就有些难度了。
Mozilla 中的 selectSingleNode() 和 selectNodes():
if(isMozilla); {
XMLDocument.prototype.selectSingleNode = function(tagname); {
var result = this.evaluate(tagname, this, null, 0, null);;
return result.iterateNext();;
}
//定义一个新的类以兼容 IE 中 selectNodes(); 的返回类型。
function __XMLNodes(result); {
this.length = 0;
this.pointer = 0;
this.array = new Array();;
var i = 0;
while((this.array[i]=result.iterateNext(););!=null);
i++;
this.length = this.array.length;
}
XMLNodes.prototype.nextNode = function(); {
this.pointer++;
return this.array[pointer-1];
}
XMLNodes.prototype.reset = function(); {
this.pointer = 0;
}
XMLDocument.prototype.selectNodes = function(tagname); {
var result = this.evaluate(tagname, this, null, 0, null);;
var xns = new __XMLNodes(result);;
return xns;
}
}
分享到:
相关推荐
IE(Internet Explorer)和Mozilla(包括Firefox)对JavaScript事件处理和事件对象的处理方式存在差异,这给开发者带来了额外的工作量。以下是一些关于IE和Mozilla中脚本兼容性的关键点: 1. **事件对象的访问**: ...
然而,由于不同浏览器对JavaScript的支持程度和实现方式存在差异,尤其是在早期版本的Internet Explorer(IE)和Mozilla Firefox(MF)之间,开发者经常遇到兼容性问题。以下是一些常见的JavaScript在IE和MF中的兼容...
本文件“js在火狐和IE浏览器的差异.zip”着重讨论了JavaScript在Mozilla Firefox(火狐)与Internet Explorer(IE)之间的区别,以下是对这些差异的详细阐述: 1. **DOM操作差异**: - Firefox和IE对Document ...
PDF.js是Mozilla开发的一个开源JavaScript库,主要用于在Web浏览器中实现PDF文档的高质量预览,无需依赖任何插件。这个库的设计目标是提供一个跨平台、跨浏览器的解决方案,使得用户能够在任何支持HTML5 Canvas的...
Internet Explorer(IE)和Mozilla Firefox是两个历史悠久且具有广泛用户基础的浏览器,它们对JavaScript的支持存在差异,尤其是在老版本中。开发者在编写JavaScript代码时,必须考虑到这些差异,以确保代码能在不同...
由于各个浏览器对JavaScript的支持程度和实现方式有所差异,所以需要采取特定的策略来处理这些差异,以确保代码在Internet Explorer(IE)和Mozilla Firefox(FF)等浏览器上都能正常运行。以下是针对IE和FF兼容性...
在Web开发中,JavaScript(JS)和CSS的跨浏览器兼容性是开发者必须面对的重要挑战,尤其是针对用户基数庞大的Internet Explorer(IE)和Mozilla Firefox(MF)。本文将详细介绍一些常见的兼容性问题及解决方案。 ...
然而,由于历史原因和技术演进的差异,不同浏览器对JavaScript的支持程度和解析方式存在显著区别,尤其是Internet Explorer(IE)与Mozilla Firefox之间。本文将深入探讨在IE和Firefox中常见的JavaScript兼容性问题...
JavaScript在不同浏览器之间的兼容性问题一直是开发者面临的重要挑战,尤其是早期的Internet Explorer(IE)和Mozilla Firefox(MF)之间存在显著差异。以下是一些关键的兼容性问题及其解决方案: 1. **document....
JavaScript 和 CSS 在不同的浏览器之间可能存在兼容性问题,尤其是在 Internet Explorer (IE) 和 Mozilla Firefox 这两个浏览器中。本文将详细探讨这些差异,并提供相应的解决策略,以确保网站在各种浏览器中都能...
特别是在早期的Web时代,Internet Explorer(简称IE)与Mozilla Firefox(简称火狐)这两款浏览器之间存在着显著的差异,这使得页面设计师不得不花费大量时间去解决它们之间的兼容性问题。本文将详细介绍如何使网站...
总的来说,理解和解决IE与Mozilla在`event`对象上的差异是构建跨浏览器JavaScript应用的关键步骤。通过适当的代码编写和工具利用,我们可以创建在多种浏览器上一致运行的应用,提高用户体验。在实际开发中,应始终...
在开发Web应用时,兼容性问题常常困扰着开发者,尤其是针对不同的浏览器,如Internet Explorer(IE)和Mozilla Firefox(FF)。这两个浏览器在处理JavaScript和CSS样式时存在诸多差异,这使得代码在不同环境下表现不...
标题与描述均聚焦于“JavaScript在IE和Firefox(火狐)的不兼容问题解决”,这表明文章旨在探讨并提供解决方案来处理在不同浏览器环境下的JavaScript兼容性问题,尤其是在Internet Explorer(IE)和Mozilla Firefox...
标题与描述均提到了“火狐和IE支持javaScript脚本的一些区别”,这明确指出了文章将探讨在Mozilla Firefox和Internet Explorer(IE)浏览器中JavaScript脚本的不同支持情况。以下是对给定文件中提及的各个知识点的...
### JavaScript的IE与Firefox兼容性解决方案 #### 一、`document.form.item` 问题 - **现有问题**:代码中存在大量使用 `document.formName.item("itemName")` 的语句,这种写法在 Mozilla Firefox(简称MF)...
JavaScript 和 CSS 在不同的浏览器上,特别是 Internet Explorer (IE) 和 Mozilla Firefox 之间存在一些差异,这些差异主要体现在解析规则、实现细节以及某些功能的支持上。理解这些差异对于编写跨浏览器兼容的代码...
针对"支持FF",这里的FF指的是Mozilla Firefox浏览器,它与IE有不同的内核和JavaScript引擎实现,因此有些JavaScript代码可能在IE下运行正常而在Firefox下出现问题,反之亦然。为了确保兼容性,我们需要使用跨浏览器...
JavaScript是一种广泛用于网页开发的脚本语言,它在不同的浏览器中有不同的实现,其中最显著的区别在于Internet Explorer(IE)和Mozilla Firefox(Firefox)。以下是一些关键的区别点: 1. **对象问题** - **...