首页 web前端 js教程 开发跨浏览器的JavaScript方法说明_javascript技巧

开发跨浏览器的JavaScript方法说明_javascript技巧

May 16, 2016 pm 07:01 PM

IE是当前浏览器的一个异类,不过解决方法倒也相当简单,使用Firefox和Safari 之 类的浏览时,可以使用元素的setArribute方法来设置元素的class属性

开发跨浏览器的JavaScript

1. childNodes在ff中和ie的区别。

ff中的node(nodeType = 1)都是用textNode(nodeType = 3)分开的,而ie/op不是这样的。

content



在ff下,box1的childNodes为3个,ie下为1个。

2. 设置某个node对象的style class名称。

ie中要设置某个node的class用"className"作为attr来set或者get。

ff等其它的浏览器用"class"作为attr来set或者get。

代码:

if(typeof node1.getAttribute("className") == "string") {

.

}

3. 设置某个node对象的style content。

直接举例把

代码:

      var oStyle = oNode.getAttribute("style");

// ie

   if(oStyle == "[object]") {

      oStyle.setAttribute("cssText", strStyle);

      oNode.setAttribute("style", oStyle);

   } else {

      oNode.setAttribute("style", strStyle);

   }

4. 事件对象。

ie用event

ff用evnt

5. 事件作用对象

ie用objEvent.srcElement

ff用objEvent.target

这个跟 xml 文件写作有关,将 IE 的 preserveWhiteSpace 设为 true 看看,底下是取自微软的说明文件
代码:

var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.4.0");

xmlDoc.async = false;

xmlDoc.preserveWhiteSpace = true;

xmlDoc.load("books.xml");

alert(xmlDoc.xml);

xmlDoc.async = false;

xmlDoc.preserveWhiteSpace = false;

xmlDoc.load("books.xml");

alert(xmlDoc.xml);

-----------------------

1.向表中追加行:

document.createElement 和document.appendChild方法可以很容易的做到向表中追加行或从头创建包含表行的新表:使用 document.createElement创建表格,在使用document.appendChild方法将这些表单元格增加到表行;接下来使用 document.appendChild将表行增加到表中。

IE允许讲tr元素增加到tbody中,而不是直接增加到table中。







向这个表中增加行的正确做法是把行增加到表体,而不是增加到表,如是所示:

var cell=document.createElement("td").appendChild(document.createTextNode("foo");

var row = document.createElement("tr").appendChild(cell);

document.getElementById("mysqlTableBody").appendChild(row);

幸运的是,这种方法在所有当前浏览器都通用,也包括IE。如果你养成习惯,总是使用表中的表体,就不用担心这个问题了。

2 通过Javascrīpt设置元素的样式

可以通过Javascrīpt使用元素的setAttribute方法设置元素的样式。例如,要把span 元素中的文本修改为采用红色粗体显示,可以使用setAttribute方法如下:

var spanElement = document.getElementById("mySpan");

spanElement.setAttribute("style","font-weight:bold ; color: red;");

除了IE,这种方法在当前其它浏览器上都是行得通的.对于IE,解决方法是使用元素 style对象的cssText属性来设置所需样式,尽管这个属性不是标准的,但是得到广泛支持, 如下所示:

var spanElement = document.getElementById("mySpan");

spanElement.style.cssText = "font-weight:blod ; color:red;";

这种方法在IE和大多数其他浏览器上都能很好好工作,只有Opera除外。为了让代码在 所有当前浏览器上都可移植,可以同时使用这两种方法,也就是既使用setAttribute方法, 又使用style对像的cssText属性,如下所示:

var spanElement = document.getElementById("mySpan");

spanElement.setAttribute("style","font-weight:bold ; color: red;");

spanElement.style.cssText = "font-weight:blod ; color:red;";

3 设置元素的class属性

IE是当前浏览器的一个异类,不过解决方法倒也相当简单,使用Firefox和Safari 之 类的浏览时,可以使用元素的setArribute方法来设置元素的class属性,如下所示:

var element = document.getElementById("myElement");

element.setAttribute("class","styleClass");

奇怪的是,如果使用setAttribute方法,并指定属性名为class,IE并不会设置元素的 class属性。相反,只使用setAttribute方法时IE会自己识别className属性。

对于这种情况,完备的解决方法是:使用元素的setAttribute方法时,将class和 className都用作属性名,如下所示:

var element = document.getElementById("myElement");

element.setAttribute("class","styleClass");

element.setAttribute("className","styleClass");

当前大多数浏览器都会使用class属性名而忽略className,IE则正好相反。

4 创建输入元素

   输入元素为用户提供了页面交互的手段,HTML本身有一组有限的输入元素,包括单行文 框、多行文本框、选择框、选择框、按钮、复选框和单行钮。你可能想使用Javascrīpt 动态地创建这样一些输入元素作为Ajax实现的一部分。

   单行文本框、按钮、复选框和单选钮都可以创建为输入元素,只是type属性的值有所不同。选择框和文本区有自己特有的标记,通过Javascrīpt动态创建输入元素很简单(但单选钮除外),只要遵循一些简单的规则就行。使用document.createElement方法可以很容易创建选择框和文本区,只需向document.createElement传递元素的标记名,如select或textarea。

单行文本框、按钮、复选框和单选钮稍难一点,因为它们都有同样的元素名input,只 是type属性的值不同。所以,要创建这些元素,不仅需要使用document.createElement方法, 后面还要调用元素的setAttribute方法来设置type属性的值。这并不难,但确实要多加一 行代码。

   考虑在哪里把新创建的输入元素增加到其父元素中,必须注意document.createElement 和setAttribute语句的顺序。在某些浏览器中,只有创建了元素,而且正确设置了type属性时,才会把新创建的元素增加到其父元素中。例如,以下代码段在某些浏览器中可能有奇怪的行为:

document.getElementById("formElement").appendChild(button);

button.setAttribute("type","button");

为了避免奇怪的行为,要确保创建输入元素的一设置其所有属性,特别是type属性, 如下:

var button = document.createElement("input");

button.setAttribute("type","button");

document.getElementById("formElement").appendChild(buttion);

遵循这个简单的规则,有助于消除以后可能出现的一些难于诊断的问题。

5.向输入元素增加事件处理程序

向输入元素增加事件处理程序应该与使用setAttribute方法并指定事件程序的名字和所需函数程序的名字一样容易,对吗?错。设置元素的事件处理程序的标准做法是使用元素的 setAttribute方法,它以事件名作为属性名,并把函数处理程序作为属性值,如下所示:

var formElement = document.getElementById("formElement");

formElement.setAttribute("onclick","doFoo();");

除了IE,上面的代码在所有当前浏览器中都能工作,如果在IE中使用Javascrīpt设置 的事件处理程序,必须对元素使用点记法来引用所需的事件处理程序,并把它赋为匿名函数, 这个匿名函数要调用所需要的事件处理程序,如下所示:
var formElement = documentgetElementById("formElement");

formElement.onclick = function(){ doFoo(); };

幸运的是,这种技术得到了IE和所有其他当前浏览器的支持,所以完全可以通过 Javascrīpt动态地设置表单元素的事件处理程序。

6 创建单选钮

除了IE,当前所有其他浏览器都允许使用以下方法创建单选钮(这些方法应该能想到);

var readioButtion = document.createElement("input");

readioButtion.setAttribute("type","radio");

readioButtion.setAttribute("name","radioButtion");

readioButtion.setAttribute("value","checked");

这样就能在除IE以外的所有当前浏览器中创建单选钮,而且能正常工作。在IE中, 单选钮确实会显示出来,但是无法将其选中,因为点击单选钮并不按我们预想得那样使之选 中。在IE中,创建单行钮的方法与其他浏览器所用的方法完全不同,而且根本不兼容。对于 前面建立的单选钮,在IE中可以如下建立:

var radioButtion = document.createElement("");

这就需要某种浏览器嗅探(browser-sniffing)机制。IE能识别出名为uniqueID的document对象的专用属性,名为uniqueID。IE也是惟一能 识别这个属性的浏览器,所以uniqueID很适合来确定脚本是不是在IE中运行。

使用document.uniqueID属性来确定脚本在哪个浏览器中运行时,可以结合IE特定的方 法和标准兼容的方法,就会得到以下代码:

if(document.uniqueID){

//Internet Explorer

var radioButtion = document.createElement("");

}

else{

//Standards Compliant

var readioButtion = document.createElement("input");

readioButtion.setAttribute("type","radio");

readioButtion.setAttribute("name","radioButtion");

readioButtion.setAttribute("value","checked");

}

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1655
14
CakePHP 教程
1414
52
Laravel 教程
1307
25
PHP教程
1253
29
C# 教程
1227
24
如何使用WebSocket和JavaScript实现在线语音识别系统 如何使用WebSocket和JavaScript实现在线语音识别系统 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript实现在线语音识别系统引言:随着科技的不断发展,语音识别技术已经成为了人工智能领域的重要组成部分。而基于WebSocket和JavaScript实现的在线语音识别系统,具备了低延迟、实时性和跨平台的特点,成为了一种被广泛应用的解决方案。本文将介绍如何使用WebSocket和JavaScript来实现在线语音识别系

WebSocket与JavaScript:实现实时监控系统的关键技术 WebSocket与JavaScript:实现实时监控系统的关键技术 Dec 17, 2023 pm 05:30 PM

WebSocket与JavaScript:实现实时监控系统的关键技术引言:随着互联网技术的快速发展,实时监控系统在各个领域中得到了广泛的应用。而实现实时监控的关键技术之一就是WebSocket与JavaScript的结合使用。本文将介绍WebSocket与JavaScript在实时监控系统中的应用,并给出代码示例,详细解释其实现原理。一、WebSocket技

如何利用JavaScript和WebSocket实现实时在线点餐系统 如何利用JavaScript和WebSocket实现实时在线点餐系统 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket实现实时在线点餐系统介绍:随着互联网的普及和技术的进步,越来越多的餐厅开始提供在线点餐服务。为了实现实时在线点餐系统,我们可以利用JavaScript和WebSocket技术。WebSocket是一种基于TCP协议的全双工通信协议,可以实现客户端与服务器的实时双向通信。在实时在线点餐系统中,当用户选择菜品并下单

如何使用WebSocket和JavaScript实现在线预约系统 如何使用WebSocket和JavaScript实现在线预约系统 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript实现在线预约系统在当今数字化的时代,越来越多的业务和服务都需要提供在线预约功能。而实现一个高效、实时的在线预约系统是至关重要的。本文将介绍如何使用WebSocket和JavaScript来实现一个在线预约系统,并提供具体的代码示例。一、什么是WebSocketWebSocket是一种在单个TCP连接上进行全双工

JavaScript和WebSocket:打造高效的实时天气预报系统 JavaScript和WebSocket:打造高效的实时天气预报系统 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的实时天气预报系统引言:如今,天气预报的准确性对于日常生活以及决策制定具有重要意义。随着技术的发展,我们可以通过实时获取天气数据来提供更准确可靠的天气预报。在本文中,我们将学习如何使用JavaScript和WebSocket技术,来构建一个高效的实时天气预报系统。本文将通过具体的代码示例来展示实现的过程。We

简易JavaScript教程:获取HTTP状态码的方法 简易JavaScript教程:获取HTTP状态码的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

javascript中如何使用insertBefore javascript中如何使用insertBefore Nov 24, 2023 am 11:56 AM

用法:在JavaScript中,insertBefore()方法用于在DOM树中插入一个新的节点。这个方法需要两个参数:要插入的新节点和参考节点(即新节点将要被插入的位置的节点)。

如何在JavaScript中获取HTTP状态码的简单方法 如何在JavaScript中获取HTTP状态码的简单方法 Jan 05, 2024 pm 01:37 PM

JavaScript中的HTTP状态码获取方法简介:在进行前端开发中,我们常常需要处理与后端接口的交互,而HTTP状态码就是其中非常重要的一部分。了解和获取HTTP状态码有助于我们更好地处理接口返回的数据。本文将介绍使用JavaScript获取HTTP状态码的方法,并提供具体代码示例。一、什么是HTTP状态码HTTP状态码是指当浏览器向服务器发起请求时,服务

See all articles