Microsoft FrontPage 中有两种类型的事件,一种由 Application 对象模型驱动,另一种由 Page 对象模型驱动。Application 对象模型的事件可用来控制站点在什么条件下发布,是否一触发 OnPageClose 事件就保存网页,或者是否一创建新网页就设置样式、字体或背景。有关 Application 对象模型事件的详细信息,请单击下列事件列表中的事件之一。
在 Microsoft Internet Explorer DHTML 对象模型中,事件处理器是使用下列方法之一创建的:
可以在 script 标记内创建过程或函数来声明事件处理器函数,再定义要为其生成事件的元素的“On*”属性,由此属性调用该过程。例如,若要捕获鼠标在锁定标记上的单击操作,可以使用下例中所示的 HTML 代码。
<html>
<head>
<script language="VBScript">
sub test
msgbox "You clicked"
End Sub
</script>
</head>
<body>
<a href="CatchMouse.htm" onclick="CatchMe"> This is an anchor, click here</a>
</body>
</html>
声明事件处理代码的另一种方法是创建包含 FOR= 属性的 script 标记,如下例所示。
<SCRIPT FOR=myanchor EVENT=onclick LANGUAGE="VBScript">
msgbox "You Clicked"
</SCRIPT>
<a id="myanchor" href="CatchMouse.htm" onclick="CatchMe">this is an anchor, click on it </a>
但是,在 FrontPage Page 对象模型中,编程所用的是与 Internet Explorer 兼容但用于设计阶段的事件和对象。若要设计实时运行的事件,可使用标准的 Microsoft Visual Basic 5.0(或更高版本)关键字来访问 Page 对象模型事件,这与访问 Web 对象模型事件的方法相同。该方法结合了上述两种技术。下列示例捕获 FrontPage 中超链接的 OnClick 事件。
在 Visual Basic 编辑器内,插入一个类模块并命名为 CatchOnClick。将下列代码添加到类模块中。
Dim WithEvents eAnchor As FPHTMLAnchorElement
Dim WithEvents eDoc As FPHTMLDocument
Dim e As IHTMLEventObj
Private Sub Class_Initialize()
Set eDoc = ActiveDocument
Set eAnchor = eDoc.links(0)
End Sub
Private Function eAnchor_onclick() As Boolean
Set e = eAnchor.Document.parentWindow.event
If (MsgBox("OnClick Event for " & e.srcElement.tagName & _
" would you like to cancel the event bubbling?", _
vbYesNo) = vbYes) Then
e.cancelBubble = True
e.returnValue = False
Else
e.cancelBubble = False
e.returnValue = True
End If
End Function
Private Function eDoc_onclick() As Boolean
MsgBox "OnClick event for the Document object"
End Function
然后添加一个标准模块并添加下列代码。
Public e As CatchOnClick
Sub GetClick()
Set e = New CatchOnClick
End Sub
注意 若要运行本示例,请执行下列步骤:
此时会显示提示,指出 OnClick 事件已触发。该提示也会询问用户程序是否应将事件沿事件链向上传递。如果选择“是”,则 OnClick 事件将传递到 Document 对象以进行处理。
若要控制事件将传递到哪个 Document 对象,必须设置 cancelBubble 和 returnValue 事件。cancelBubble 事件用来取消在事件链上向上传递事件。如果不想让 OnClick 事件向上传递到上一级的 OnClick 事件,请将 IHTMLEventObject 的 cancelBubble 属性设置为 True,否则,请将 cancelBubble 属性设置为 False。例如,如果文档上放有一个具有 OnClick 事件的图像,而且文档本身也具有 OnClick 事件,则如果不想让 OnClick 事件向上传递到文档的 OnClick 事件,请将该图像的 IHTMLEventObject 的 cancelBubble 属性设置为 True。
returnValue 属性用于控制事件触发时 FrontPage 所采取的默认操作。如果使用了上述放置在文档中的图像的示例,并且在 OnClick 事件中将图像的 IHTMLEventObject 的 returnValue 属性设为 False,则快捷菜单将会禁用(因为用鼠标右键单击快捷菜单是 OnClick 事件的默认操作)。