动态HTML、W3C文档对象模型与XML的应用
立即解锁
发布时间: 2025-08-20 01:27:14 阅读量: 3 订阅数: 5 


JavaScript入门与实践指南
### 动态 HTML、W3C 文档对象模型与 XML 的应用
#### 1. 跨浏览器动态 HTML 脚本编写
在实际开发中,为不同浏览器编写不同版本的 DHTML 脚本并非最佳实践,编写跨浏览器的网页版本会更加高效。下面以一个简单的标签页条为例,介绍如何实现跨浏览器的 DHTML 脚本。
##### 1.1 HTML 结构与样式
```html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>跨浏览器标签页条示例</title>
<style type="text/css">
.tabStrip
{
background-color: #E4E2D5;
padding: 3px;
height: 22px;
}
.tabStrip div
{
float: left;
font: 14px arial;
cursor: pointer;
}
.tabStrip-tab
{
padding: 3px;
}
.tabStrip-tab-hover
{
border: 1px solid #316AC5;
background-color: #C1D2EE;
padding: 2px;
}
.tabStrip-tab-click
{
border: 1px solid #facc5a;
background-color: #f9e391;
padding: 2px;
}
</style>
<script type="text/javascript">
function handleEvent(e)
{
var eSrc;
if (window.event)
{
e = window.event;
eSrc = e.srcElement;
}
else
{
eSrc = e.target;
}
if (e.type == "mouseover")
{
if (eSrc.className == "tabStrip-tab")
{
eSrc.className = "tabStrip-tab-hover";
}
}
if (e.type == "mouseout")
{
if (eSrc.className == "tabStrip-tab-hover")
{
eSrc.className = "tabStrip-tab";
}
}
if (e.type == "click")
{
if (eSrc.className == "tabStrip-tab-hover")
{
eSrc.className = "tabStrip-tab-click";
var num = eSrc.id.substr(eSrc.id.lastIndexOf("-") + 1);
showDescription(num);
}
}
}
function showDescription(num)
{
var descContainer = document.getElementById("descContainer");
var div = document.createElement("div");
var text = document.createTextNode("Description for Tab " + num);
div.appendChild(text);
descContainer.appendChild(div);
}
document.onclick = handleEvent;
document.onmouseover = handleEvent;
document.onmouseout = handleEvent;
</script>
</head>
<body>
<div class="tabStrip">
<div id="tabStrip-tab-1" class="tabStrip-tab">Tab 1</div>
<div id="tabStrip-tab-2" class="tabStrip-tab">Tab 2</div>
<div id="tabStrip-tab-3" class="tabStrip-tab">Tab 3</div>
</div>
<div id="descContainer"></div>
</body>
</html>
```
以上代码创建了一个包含三个标签页的标签页条。当鼠标悬停在标签页上时,标签页的样式会变为蓝色背景和深蓝色边框;当点击标签页时,标签页的样式会变为浅橙色背景和深橙色边框,同时会在页面上添加该标签页的描述信息。
##### 1.2 代码分析
- **HTML 部分**:
- `<div class="tabStrip">` 作为标签页条的容器,具有灰色背景。
- 内部的三个 `<div>` 元素代表三个标签页,每个标签页有唯一的 `id` 和 `tabStrip-tab` 类。
- `<div id="descContainer">` 用于显示标签页的描述信息。
- **CSS 部分**:
- `.tabStrip` 类定义了标签页条的整体样式,包括背景颜色、内边距和高度。
- `.tabStrip div` 选择器将标签页元素设置为左浮动,使其呈现内联外观。
- `.tabStrip-tab` 类定义了标签页的正常状态样式。
- `.tabStrip-tab-hover` 类定义了标签页的悬停状态样式。
- `.tabStrip-tab-click` 类定义了标签页的点击状态样式。
- **JavaScript 部分**:
- `handleEvent` 函数用于处理鼠标悬停、移出和点击事件。
- `showDescription` 函数用于创建并添加标签页的描述信息到页面上。
#### 2. JavaScript 与 XML
XML 是一种以数据为中心的语言,用于描述数据而非显示信息。它与 HTML 不同,是一种结构化的纯文本文件,可使用任何处理纯文本的软件进行创建和编辑。XML 的成功在于其内容与样式的分离,使其易于使用。
##### 2.1 XML 的应用场景
- **数据存储**:可作为数据库使用,适合大型和复杂的文档。
- **远程数据检索**:如 RSS 和 Atom 格式的网页聚合。
- **数据传输**:可在不兼容的系统之间传输数据。
##### 2.2 使用 JavaScript 操作 XML
在不同浏览器中,加载和操作 XML 文件的方式有所不同。
- **IE 浏览器**:
- 依赖 `ActiveXObject` 和 MSXML 库来获取和打开 XML 文档。
- 示例代码:
```javascript
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.load("myfile.xml");
```
- 为了使用最新版本的 MSXML,可使用以下函数:
```javascript
function createDocument()
{
var xmlDoc;
if (window.ActiveXObject)
{
var versions =
[
"Msxml2.DOMDocument.6.0",
"Msxml2.DOMDocument.3.0"
];
for (var i = 0; i < versions.length; i++)
{
try
{
xmlDoc = new ActiveXObject(versions[i]);
return xmlDoc;
}
catch (error)
{
//do nothing here
}
}
}
return null;
}
```
- 使用 `async` 属性和 `readyState` 属性来检测 XML 文件的加载状态:
```javascript
function xmlDoc_readyStateChange()
{
//Check for the readyState. If it’s 4, it’s loaded!
if (xmlDoc.readyState == 4)
{
alert("XML file l
```
0
0
复制全文
相关推荐










