DHTML对象模型(About the DHTML Object Model)(二)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

事件:冒泡、禁止与处理

单击一个按钮,移动鼠标指针到网页的一部分,在页面上选中一些文本——这些动作都会激发事件。一个DHML的网页制作者可以编写代码以便在响应这些事件的时候运行,这段特定的代码通常称为事件句柄,因为它确实在处理事件。

事件处理不仅限于IE4.0IE3.0, Netscape Navigator 3.x Communicator都支持事件处理。然而,在IE4.0中,无论是作为事件源的web页面Html元素,还是这些事件源引发的事件的种类,都已经被大大地扩展。以前,只有很少的一些HTML元素,好像锚点、图片热点、表单元素、application对象和object对象等,可以引发事件。在IE4.0事件模型中,页面上的每一个HTML元素都可以引发所有的鼠标和键盘事件。

下面的列表中列出了在IE4.0(及其后的更高版本译者注)中,任一HTML元素都可激发的常用事件:

鼠标事件

激发事件的用户行为:

onmouseover

Moves the mouse pointer over (that is, enters) an element.

onmouseout

Moves the mouse pointer off (that is, exits) an element.

onmousedown

按下鼠标的任一件。

onmouseup

释放鼠标的任一键。

onmousemove

在元素的内部移动鼠标指针。

onclick

在元素上单击鼠标左键。

ondblclick

在元素上双击鼠标左键。

键盘事件

激发事件的用户行为:

onkeypress

按下并释放一个键(整个按下弹起的过程).注意,若一个建被持续按下,多个onkeypress 事件将会被连续激发。

onkeydown

按下按键,该事件只会被激发一次,即使该键被持续按下。

onkeyup

释放按键

为了帮助网页制作者更紧凑、更简单和更容易维护地创建代码,IE4.o将事件冒泡作为处理事件的新方法。Microsoft Windows®, OS/2, OSF Motif, 和几乎所有其它的图形用户界面平台都是使用这种技术在它们的用户界面中处理事件的。但是对于HTML来说,事件冒泡却是一种新的方法,它提供了一个在Web文档上合成事件句柄的有效模型。

在以前,若一个HTML元素被激发了一个事件,但在这个元素上,相应的事件句柄并没有被注册,这个事件就会消失,不再被感觉到存在了。事件冒泡机制则把这个未处理的事件进一步向上传递给元素的父级元素。于是,这个事件继续在元素的层次结构中向上冒(像气泡向上冒一样),直到它被处理,或者到达了对象模型的顶层,document对象。

 

事件冒泡的有效性在于以下几点:

l           允许多个元素上的共同动作被统一处理。

l           减少Web页面上代码的数量。

l           减少更新文档时,要更改的代码的数量。

 

下面是一个事件冒泡的简单例子:

(例子的超级链接;

http://msdn.microsoft.com/workshop/samples/author/dhtml/overview/dom_01.htm )

<HTML>
   
<BODY>
   
<DIV id=OuterDiv style="background-color: red" onmouseover="alert(window.event.srcElement.id);">
   
This is some text
   
<IMG id=InnerImg>
   
</DIV>
   
</BODY>
   
</HTML>
   

在这个页面中当用户在文本区域上移动鼠标指针时,将会弹出一个写有“OuterDiv”字样的对话框,若用户在图片上移动鼠标指针时,带有“InnerImg”字样的对话框将会弹出。

请注意,img对象的onmouseover事件是在该事件句柄没有在对象上注册的情况下被处理。为什么可以这样呢?因为onmouseover事件向上冒泡到了它的父级元素,div对象。由于在div对象上为onmouseover事件注册了事件句柄,它引发了事件处理并产生了上面所提到的对话框。

每次一个事件被激发,window对象的一个特殊的属性就会被创建。这个特殊的属性包括了事件对象(event对象)。这个事件对象包含了刚被激发的事件的上下文信息,例如鼠标位置、键盘状态以及最重要的这个事件的源元素。

       源元素就是出发这个事件的元素,可以通过window.event对象的srcElement属性访问到它。

在上面的例子里,对话框显示的就是激发这个事件的源元素的id属性。

 

处理鼠标效果:

网页制作者可以通过制作鼠标效果来令页面的一部分在用户把鼠标指针移动到上面时作出交互反应。在IE4.0中创造鼠标效果的处理过程是十分简单的。

(例子的超级链接:

http://msdn.microsoft.com/workshop/samples/author/dhtml/overview/dom_02.htm )

<HTML>
   
<HEAD>
   
<STYLE>
   
.Item {
   
   cursor: hand;
   
   font-family: verdana; 
   
   font-size: 20;
   
   font-style: normal;
   
   background-color: blue;
   
   color: white
   
 }
   
.Highlight {
   
   cursor: hand; 
   
   font-family: verdana;
   
   font-size: 20;
   
   font-style: italic;
   
   background-color: white;
   
   color: blue
   
 }
   
</STYLE>
   
</HEAD>
   
<BODY>
   
<SPAN class=Item>Milk</SPAN>
   
<SPAN class=Item>Cookies</SPAN>
   
<SPAN class=Item>Eggs</SPAN>
   
<SPAN class=Item>Ham</SPAN>
   
<SPAN class=Item>Cheese</SPAN>
   
<SPAN class=Item>Pasta</SPAN>
   
<SPAN class=Item>Chicken</SPAN>
   

  
    
  
<SCRIPT>
   
function rollon() {
   
  if (window.event.srcElement.className == "Item") {
   
     window.event.srcElement.className = "Highlight";
   
  }
   
}
   

  
    
  
document.onmouseover = rollon;
   

  
    
  
function rolloff() {
   
  if (window.event.srcElement.className == "Highlight") {
   
     window.event.srcElement.className = "Item";
   
  }
   
}
   

  
    
  
document.onmouseout = rolloff;
   
</SCRIPT>
   
</BODY>
   
</HTML>
   

在上面的例子中,7span对象被使用item 样式类设置成了斜体。当鼠标指针在这7个元素中的任一个个上悬浮移动时,它的样式将会被改变成Highlight样式类指定的那样。

Internet Explorer 4.0中的新功能带来了以下好处:

l         现在事件可以从span标记中被激发,而以前,网页制作者可能就必须先把每一个span的内容都包装在一个锚点标记(anchor)中,才能获得相应的事件。

l         使用事件冒泡,事件可以在文档对象(document object)这个层次上被捕获。你不必为参与这个效果每个每个元素都注册一个独立的事件处理句柄。例如,假如网页制作者向页面添加HTML代码,这些附加的元素将会自动参与这个事件模型而不需改动哪怕一行的脚本代码。注意一点,文档对象(document object)是在这个文档里面的所有元素的“超级父类”(super parent)元素。

DHTML Object Model&DHTML&DOM DHTML Object Model:DHTML对象模型,利用DHTML Object Model可以单独操作页面上的对象,每个HTML标记通过它的ID和NAME属性被操纵,每个对象都具有自己的属性、方法和事件,通过方法操纵对象,通过事件触发因果过程。 DOM:文档对象模型,将页面描述成一个树形的对象结构,是对DHTML Object Model的更全面的完善,可以利用树形结构对对象利用之间的关... 阅读详情

相关推荐

DHTML对象模型About the DHTML Object Model()

 【注:最近在学习asp.net,觉得javascript的很多知识在asp.net中仍很有用,又觉得javascript的实质是利用脚本对DHTML对象编程,但网上关于DHTML层次结构的中文资料又比较少,所以看了msdn上的这个资料后就翻译了出来,希望大家多多指教。】DHTML对象模型About the DHTML Object Model)  动态HTML(DHTML)

heroyu的专栏 916

DHTML对象模型About the DHTML Object Model()

禁止事件:所有的事件都将向它们的父级元素冒泡,而且除非冒泡过程中事件被禁止了,否则事件将会被递归地沿着层次结构的路径最后上浮到文档对象(document object)。要禁止一个事件,你必须在事件句柄中把window.event.cancelBubble属性的值设为“true”。注意一点,除非事件被禁止了,否则,在沿着层次结构冒泡的过程中,它将会被所有注册了这个事件句柄的父级元素处理,即使它

heroyu的专栏 930

DHTML对象模型方法

*     在DOM中,可以对页面元素进行访问,甚至对其进行操作。对于文档中的特定区域,如果已对其进行了惟一标识,则可以对该区域进行检索。*     document.getElementById(元素标识)方法,返回id值为“元素标识”的对象的一个索引。*     document.getElementsByName(元素名称)方法,返回name值为“元素名称”的所有XHTML元素对象的列表。*

gaotianle的专栏 666

HTML 一键打包 EXE 工具:解压即用,免安装开箱即用

这是一款基于 Java 开发的现代化打包工具,专注于将 HTML5、Vue、React 等前端项目及网页离线项目,一键打包为 Windows 独立桌面客户端(.exe)。无需繁重的 Electron 环境,也无需复杂的 C++/Rust Tauri 编译工具链,直接解压即用,什么环境都不需要安装。采用极简的可视化 GUI 界面,3 秒即可将你的 Web 网页打包为原生性能流畅、内存占用极低的绿色便携式桌面应用!

2601_96390678的博客 555

HTML 的 <picture> 元素

picture>元素是响应式图片方案中的重要工具,它让开发者能够根据设备条件灵活地选择图片源,兼顾性能与显示效果。<picture>是容器,通过 <source>提供候选图片,<img>作为兜底。media属性使用 CSS 媒体查询匹配设备条件。type属性实现现代图片格式的优雅降级。srcset和sizes用于分辨率和尺寸切换。简单场景优先使用srcset,复杂场景使用 <picture>。始终保留 <img>元素,保证无障碍和兼容性。

IMPYLH的博客 344

html理论

表格:1.Table定义一个表格 2.Tr定义一个表格行 3.Th 定义一个表格的表头单元格 4.Td 定义一个表格的单元格 5. Thead标签‌:用于组合行或列的表头单元格。优点:通过使用iframe,可以在主页面内嵌套子页面,实现网页的层次化和模块化,解决加载缓慢问题,能加载脚本,方便管理。15.input(输入框)的disabled(禁用)属性 和 readonly(只读)属性 的区别?13.Input(输入框)只读,禁用,必填,提示词(占位符)属性分别是什么?

2602_95057108的博客 209

基准测试的自动化报告生成:从 JSON 指标到交互式 HTML 图表

在大语言模型(LLM)研发与迭代测试的高频节奏中,算法团队每周都需要对数十个不同数据配比、不同训练步长的 Checkpoints 进行跨越十余个权威基准(MMLU、GSM8K、MATH、HumanEval、AlpacaEval 等)的全量性能评估。如果依然依赖工程师在评测结束后,手动翻看各个节点的终端日志、手动将数字填入 Excel 表格并手动截图汇报,不仅,更会耗费大量宝贵的研究员心智。构建一套完整的,实现从底层的分布式 JSON 评测日志一键自动渲染为,是算法基础设施工业化成熟的关键标志。

2201_75984884的博客 161

HTML 的 <q> 元素

q>元素用于标记行内短引用(short inline quotation),与块级引用 <blockquote>相对。它适合在段落中引用一句话、一个短语或一段简短文字,浏览器通常会自动为 <q>元素的内容加上引号。< p > 鲁迅曾说: < q > 世上本没有路,走的人多了,也便成了路。< p > 鲁迅曾说: < q > 世上本没有路,走的人多了,也便成了路。</< p > 鲁迅曾说: < q > 世上本没有路,走的人多了,也便成了路。</

IMPYLH的博客 180

HTML 的 <progress> 元素

progress>是 HTML5 新增的原生进度条元素,用于展示任务的完成进度,例如文件上传、下载、表单提交或页面加载的进度。它不需要引入任何第三方库,浏览器原生渲染,语义清晰,对屏幕阅读器友好。一个最简单的示例:</浏览器会渲染出一条进度条,已填充部分占 70%。<progress>元素内部可以放置文本内容,作为不支持该元素的旧浏览器中的降级提示。<progress>是一个轻量、语义化的原生进度条元素,适合绝大多数进度展示场景。

IMPYLH的博客 239

HTML 头部配置全解:`<head>` 与 `<meta>` 标签能做什么?有什么用?

很多前端开发者写页面时,注意力都集中在<body>里的业务内容,却很少关注<head>头部区域的配置。甚至很多人对<head>的认知只停留在「写个 title、引个样式」。事实上,<head>是整个 HTML 文档的隐形配置中心——它不直接展示任何内容,却负责告诉浏览器、搜索引擎、设备、社交平台「这个页面是什么、该怎么渲染、有什么规则」。其中<meta>标签是<head>里最核心、配置项最多的元素,用于定义各类页面元数据。合理的头部配置,能直接影响页面的。

m0_51089660的博客 148

HTML 页面的 CSS 选择器详解

CSS 选择器(Selector)是 CSS 中用于选中 HTML 元素并为其应用样式的规则。简单来说,选择器告诉浏览器「我要给页面上的哪些元素设置样式」。/* 选择器:p *//* 声明块:{ color: red;上面的代码表示:选中页面中所有的<p>段落元素,并将它们的文字颜色设置为红色。CSS 选择器是前端开发的基础功,掌握好各类选择器的用法和优先级规则,能够让你更高效、更精准地控制页面样式。建议在实际项目中多动手练习,逐步熟悉不同选择器的适用场景。

2503_91428579的博客 159

CSS 三列布局:从原理到实践

CSS 三列布局常采用左右固定、中间自适应结构,可通过 Flex、Grid 或 Float 实现,理解 BFC 是掌握布局原理的关键。

2503_93701293的博客 331

HTML系列教程:11_HTML 图像 <img> 标签零基础详解

本文详细介绍了HTML中<img>标签的使用方法。<img>是单标签,用于在网页中插入图片,需放在<body>内。核心属性包括:src(必填,指定图片路径,支持网络地址和本地相对路径)、alt(必填,图片加载失败时的替代文本)、width/height(控制尺寸,建议只设宽度避免变形)、title(鼠标悬停提示)。文中还提供了路径写法示例、常见错误(如路径错误、漏写alt、标签闭合错误等)及解决方案,并演示了如何用<a>包裹图片实现点击跳转。最后强调图片样式应

zhanghaha1314的博客 226

HTML 的 <rp> 元素

rp><rp>是 Ruby 注音结构中一个重要但容易被忽略的细节元素。它通过一对降级括号,让使用 Ruby 注音的页面在不支持该特性的环境中依然保持可读性。将 <rp>与 <rt>配合使用,括号放在注音内容前后。支持注音的浏览器自动隐藏 <rp>,不支持的环境则显示括号。日语振假名、中文拼音、中文注音等东亚语言场景是它的主要用途。配合 <ruby>、<rb>、<rtc>可以构建更复杂的注音结构。掌握 <rp>

IMPYLH的博客 344

HTML系列教程:13_HTML 列表 零基础详解

本文系统讲解了HTML中的三种列表形式:无序列表(<ul>+<li>)、有序列表(<ol>+<li>)和自定义列表(<dl>+<dt>+<dd>)。重点说明每种列表的适用场景、语法结构及使用注意事项,特别强调列表嵌套时子列表必须放在父级<li>内的规则。文章提供了大量代码示例,包括如何通过CSS去除默认列表样式、制作导航菜单等实用技巧,并对比了三种列表的特性差异,最后给出常见错误提示和综合练习建议。

zhanghaha1314的博客 391

HTML iframe 标签全面解析:原理、属性、实战场景与最佳实践

在前端组件化、微前端盛行的今天,很多人觉得iframe是老旧、过时的标签,甚至谈 iframe 色变。但事实上,iframe是 HTML 原生支持的独立浏览上下文嵌入方案,也是目前浏览器提供的最强的原生隔离方案。从第三方地图、支付页面、视频播放器嵌入,到微前端隔离、沙箱运行、在线编辑器预览,iframe依然是大量场景下最简单、最稳定、成本最低的解决方案。它的问题很明显,但它的价值也不可替代。本文从核心定义、属性体系、运行原理、实战场景、跨域通信、安全防护、避坑指南七大维度,系统讲解iframe。

m0_51089660的博客 59
下一篇: DHTML对象模型(About the DHTML Object Model)(三)
heroyu
博客等级 码龄23年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值