//一些常见的兼容性问题,仅供参考
一 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浏览器兼容问题详解】 在Web开发中,CSS(层叠样式表)是用于控制网页元素样式的关键技术,但它在不同浏览器之间的兼容性问题一直是开发者面临的挑战。以下是一些常见的CSS浏览器兼容问题及其解决策略: 1. *...
在JavaScript和CSS3的世界里,实现一个旋转时钟是一个典型的动画效果应用。本文将深入探讨如何使用`rotate`属性和`transform`函数在JavaScript中创建一个兼容多种浏览器的旋转时钟。 首先,让我们理解`transform`这...
在探讨“div+css浏览器兼容问题”这一主题时,我们首先需要理解,浏览器兼容性问题主要源于不同浏览器对Web标准的解析和实现存在差异。这不仅包括主流浏览器如Chrome、Firefox、Safari、Edge以及IE(尤其是IE6)之间...
### CSS浏览器兼容问题整理 #### 一、引言 在前端开发过程中,浏览器兼容性问题一直是开发者们关注的重点之一。由于不同的浏览器对于CSS的支持程度不一,这导致了许多原本简单的样式实现起来却变得异常复杂。本文...
在深入探讨JavaScript的典型应用与最佳实践之前,我们先来了解一下JavaScript的基本特性。 JavaScript是一种解释型的、弱类型的、基于原型的语言,支持事件驱动、函数式以及面向对象的编程风格。其主要应用领域包括...
"困境"章节可能讨论了在 IoT 开发中使用 JavaScript 面临的挑战,比如性能、实时性、设备兼容性等问题。而“互联网中的JavaScript”和“物联网呢?”则可能对比了 JavaScript 在传统互联网应用和 IoT 解决方案中的...
在JavaScript中,事件监听器和事件触发就是典型的观察者模式应用。 4. **策略模式**:定义一系列算法,并将每个算法封装起来,使它们可以相互替换。在JavaScript中,这常用于处理条件分支,让代码更易于理解和维护...
### JavaScript 图片完全固定在左右两边,兼容IE6的知识点 #### 一、问题背景与需求分析 在早期的浏览器版本中,特别是 Internet Explorer 6 (IE6),很多 CSS 特性并不支持或者存在兼容性问题。其中,“position: ...
5. **兼容性处理**:由于不同的浏览器对某些JavaScript特性支持程度不同,开发者需要考虑兼容性问题。这可能涉及到使用像jQuery这样的库,或者采用特征检测(feature detection)来确保代码在各种环境下都能正常工作...
以上就是针对`DIV+CSS`在IE6、IE7和IE8中遇到的一些典型兼容性问题及其解决策略。在实际开发中,还需要注意其他一些CSS属性,如`hasLayout`、`zoom`、`filter`等,它们在IE中也有独特的行为。解决这些问题通常需要对...
在IT行业中,兼容性和插件使用是至关重要的环节。标题"兼容jq_ecshop"表明我们关注的是一个与jQuery(简称jq)...这个过程涉及到JavaScript编程、DOM操作、事件处理、性能优化等多个方面,是Web开发中一个典型的挑战。
因此,开发者在编写JavaScript代码时需要考虑到跨浏览器兼容性问题。 在实际应用中,DOM和JavaScript的结合使得网页动态化成为可能。例如,通过JavaScript和DOM,我们可以实现用户交互功能,如响应按钮点击事件,...
首先,我们来关注IE6的一些典型问题。IE6对于CSS的支持非常有限,例如不支持浮动元素的`clear:both`属性,不理解`min-height`和`max-height`,且对盒模型的理解与W3C标准不符,导致布局混乱。解决这些问题通常需要...
"JavaScript动态网页跑马灯图片"是一个典型的JavaScript应用场景,它利用JavaScript来实现在网页上展示一组图片,并且这些图片能够按照设定的效果进行动态显示,如自动循环滚动或在鼠标悬停时暂停滚动。跑马灯效果...
在实现移动的导航菜单时,我们还需要考虑到不同设备和浏览器的兼容性问题。为了确保在各种环境下都能正常工作,可能需要引入像jQuery这样的库,它提供了跨浏览器的API,简化了DOM操作和事件处理。当然,对于现代项目...
JavaScript的`EventEmitter`和`addEventListener/removeEventListener`是典型的实现。 9. **策略模式**:定义一系列的算法,将每一个算法封装起来,让它们可以相互替换。在JavaScript中,可以利用函数或者对象字面...
由于IE对某些标准的支持不够完善,开发者经常需要面对一些兼容性问题,其中JSON(JavaScript Object Notation)的支持就是一个典型例子。 标题中的"用来解决iejson不兼容的js"指的是为了解决IE浏览器在处理JSON时...