收集有关可拖动层的信息

当将"拖动层"动作附加到某个对象时,Dreamweaver 将 MM_dragLayer() 函数插入到您的文档的 head 部分。除了将层注册为可拖动之外,此函数还会为每个可拖动的层定义三项属性:MM_LEFTRIGHTMM_UPDOWNMM_SNAPPED,您可以在自己的 JavaScript 函数中使用这些属性确定层的相对水平位置、层的相对垂直位置以及层是否达到拖动目标。

例如,下面的函数在一个名为 curPosField 的表单域中显示 MM_UPDOWN 属性的值(层当前的垂直位置)。(因为表单域在 Netscape Navigator 和 Internet Explorer 中都是动态的,即您可以在页完成载入之后更改它们的内容,所以它们非常适合用于显示不断更新的信息。)

function getPos(layername){
   var layerRef = MM_findObj(layername); 
   var curVertPos = layerRef.MM_UPDOWN;
   document.tracking.curPosField.value = curVertPos;
}

您可以用多种方法来使用这些值,而不在表单域中显示 MM_UPDOWNMM_LEFTRIGHT 的值。例如,您可以编写一个函数,根据该值距离拖放区域的远近程度在表单域中显示一条消息,或者您可以调用另一个函数,根据该值显示或隐藏层。

当页上有多个层并且所有这些层都必须到达它们的目标后访问者才可以前进到下一页或下一个任务时,读取 MM_SNAPPED 属性将特别有用。例如,您可以编写一个函数对 MM_SNAPPED 值为 true 的层进行计数,并在每放下一个层时都调用该函数。当已靠齐的计数达到所需的数目时,您可以将访问者送到下一页或显示一条祝贺消息。

如果您曾使用 onMouseOver 事件将"拖动层"动作附加到多个层中的链接,则您必须对 MM_dragLayer() 函数进行微小的更改,以防止已靠齐的层的 MM_SNAPPED 属性在鼠标指针滑过该层时被重置为 false。(如果您使用"拖动层"来创建图片拼板游戏就可能发生这种情况,因为访问者很可能在放置其它块时将鼠标指针滑过已靠齐的块。MM_dragLayer() 函数不能防止此行为的发生,因为有时这是我们所希望的,例如当您要为单个层设置多个拖放目标时。

若要防止已靠齐的层重新对齐,请执行以下操作:

  1. 在对代码进行任何更改之前先制作文档的备份副本。(您可以在 Dreamweaver 中的"站点"面板,或者在 Windows 资源管理器 (Windows) 或 Finder (Macintosh) 中完成此操作。)
  2. 选择"编辑">"查找"。
  3. 在"查找内容"弹出菜单中选择"HTML 源代码"。
  4. 在相邻的文本框中键入 (!curDrag)(包括括号)。
  5. 单击"查找下一个"。

    如果 Dreamweaver 询问是否要从文档的开头继续查找,单击"是"。Dreamweaver 找到一个内容如下的语句:

    if (!curDrag) return false;
    
  6. 关闭"查找"对话框,然后在"文档"窗口的"代码"视图中或"代码"检查器中修改该语句,修改后为:
    if (!curDrag || curDrag.MM_SNAPPED != null) return false;
    

    两个管道符 (||) 表示或,curDrag 是表示被注册为可拖动的层的变量。该语句的中文意思是"如果 curDrag 不是一个对象,或者如果它已具有 MM_SNAPPED 值,则不必继续执行函数的其余部分。"




未找到评论

 

评论添加到页面后给我发送电子邮件 | 评论报告

当前页: http://www.ecnnl.com/doc/dreamweaver/8_cn/using/19_jsb17.htm

 

E中荷|荷兰华人电子商务