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

博客主要围绕网页事件展开,介绍了禁止事件冒泡和默认行为的方法,如设置window.event.cancelBubble属性为“true”禁止冒泡,返回“false”或设置window.event.returnValue属性为“false”禁止默认行为。还探讨了onmouseover和onmouseout事件的应用,以及利用事件冒泡应用效果等内容。

禁止事件:

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

禁止事件冒泡与禁止事件的默认行为是不同的。一些事件(例如:一个锚点上的onclick)具有默认行为。当一个锚点被单击时,它默认的行为是把当前窗口导航到其src属性所指定的URL。在事件句柄中返回“false”,或者设置window.event.returnValue属性为“false”,可以禁止事件的默认行为,但不能禁止事件的向上冒泡。要禁止向上冒泡,只有把window.event.returnValue属性设为“true”,相对应地,禁止事件冒泡的设置也并会禁止事件的默认行为。

最后一个例子是演示如何利用事件冒泡将一个共同的效果应用到一组元素上的。若你想把其中一个元素排除在这个效果之外,只要简单地把下面这行代码,从:

<SPAN class=Item>Ham</SPAN>
   

修改为:

<SPAN class=Item onmouseover="window.event.cancelBubble = true;"
   
    onmouseout="window.event.cancelBubble = true;">Ham</SPAN>
   

就可以了。

(例子的超级链接:

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

进一步的思考:

在有些情况下,你可以让一个onmouseover事件只注册在一个对象上,考虑下面情况:

<DIV id=MyDiv>
   
<IMG id=MyImg>
   
</DIV>
   

假如你在img对象上移动鼠标指针,事件将会以下面的顺序激发:

MyDiv:: onmouseover
   
MyDiv:: onmouseout
   
MyImg:: onmouseover
   

把你的鼠标指针从img对象上移开将会再次激发MyDiv::onmouseover事件。

有些时候,网页制作者可能会想去探测鼠标指针何时移出一个div对象以实现某种

特别效果。这时,仅仅简单地设置onmouseout事件就并不足够了。为了使这种情况更容易解决,IE4.0标准为onmouseoveronmouseout事件增加了指示源对象(formElement)和目标对象(toElement)的属性,你可以综合使用这些属性和容器的方法来辨别鼠标指针何时移出了一个区域。

 下面的例子演示了如何使用这些属性和方法:

(例子的超级链接:

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

<HTML>
   
<BODY id=Body>
   
<DIV id=OuterDiv style="width: 100px; height: 50px; background: red" 
   
    onmouseover="over();" onmouseout="out();">
   
<IMG id=Img1>
   
<IMG id=Img2>
   
<IMG id=Img3>
   
</DIV>
   
<SCRIPT>
   
function over() {
   
    var s;
   
    s = "onmouseover: "+window.event.srcElement.id+" from: "+
   

  
    
  
window.event.fromElement.id+" to: "+window.event.toElement.id;
   
    alert(s);
   
}
   

  
    
  
function out() {
   
    var s;
   
    s = "onmouseout: "+window.event.srcElement.id+" from: "+
   

  
    
  
window.event.fromElement.id+" to: "+window.event.toElement.id;
   
    alert(s);
   

  
    
  
if (!(OuterDiv.contains(window.event.toElement))) 
   
/*onmouseout事件并非由于鼠标指针从OuterDiv对象移进与其内部接壤的img对象而激发的,即:鼠标指针是真正的离开了整个OuterDiv包含的区域(译者注)*/
   
{
   
        alert("Out Now");
   
    }
   
}
   
</SCRIPT>
   

  
    
  
</BODY>
   

 

相关主题:

·                     处理窗口、框架和对话框 Working with Windows, Frames, and Dialog Boxes

·                     对集合和元素进行脚本编写Scripting with Elements and Collections

·                     理解事件机制Understanding the Event Model

·                     交叉框架的脚本编写与数据安全About Cross-Frame Scripting and Security

 

内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值