FrontPage VBA教程:使用事件控制操作

Microsoft FrontPage 中有两种类型的事件,一种由 Application对象模型驱动,另一种由 Page对象模型驱动。Application对象模型的事件可用来控制站点在什么条件下发布,是否一触发 OnPageClose事件就保存网页,或者是否一创建新网页就设置样式、字体或背景。有关 Application对象模型事件的详细信息,请单击下列事件列表中的事件之一。

OnAfterPageSave OnPageNew
OnBeforePageSave OnPageOpen
OnAfterWebPublish OnWebClose
OnBeforeWebPublish OnWebNew
OnAfterPageWindowViewChange OnPageWindowActivate
OnAfterWebWindowSubViewChange OnRecalculateHyperlinks
OnAfterWebWindowViewChange OnWebFileCheckOut
OnBeforePageWindowViewChange OnWebOpen
OnBeforeWebWindowSubViewChange OnPageClose

在 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事件的默认操作)。

上页:FrontPage VBA教程:理解 Microsoft FrontPage 中的绝对和相对 URL 地址 下页:FrontPage VBA教程:在无窗口环境下编码

FrontPage VBA教程:使用事件控制操作

FrontPage VBA教程:在无窗口环境下编码 FrontPage VBA教程:abort方法
FrontPage VBA教程:Activate方法 FrontPage VBA教程:Add方法
FrontPage VBA教程:AddChoice方法 FrontPage VBA教程:AddLinkBar方法
FrontPage VBA教程:ApplyChanges方法 FrontPage VBA教程:ApplyNavigationStructure方法
FrontPage VBA教程:ApplyTemplate方法 FrontPage VBA教程:ApplyTheme方法
FrontPage VBA教程:CancelRequests方法 FrontPage VBA教程:Checkin方法
FrontPage VBA教程:Checkout方法 FrontPage VBA教程:clear方法
FrontPage VBA教程:Close方法 FrontPage VBA教程:commit方法
FrontPage VBA教程:Copy方法 FrontPage VBA教程:createElement方法
FrontPage VBA教程:createStyleSheet方法 FrontPage VBA教程:createStyleState方法
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号