Windows 脚本部件  

在 Behavior 脚本部件中说明自定义事件

与 Automation 脚本部件类似,Behavior 脚本部件可以说明自定义事件。这些事件可以在脚本部件内激活,并在包含文档内进行处理。事件可以按下述方法在 <public> 元素内声明:

<public>
   <event name="onResultChange" />
</public>

然后,就可以在脚本中通过调用 fireEvent 方法来激活该事件:

<script language="JScript">
   // 此处为其他代码。
   fireEvent("onResultChange");
   // 此处为其他代码。
</script>

通过说明与元素已经定义的同名事件,一个操作可以覆盖该元素的缺省操作。例如,说明了 onclick 事件的操作可以覆盖该元素缺省的 onclick 事件。

获取和设置自定义事件信息

自定义的脚本部件事件可以访问 DHTML 事件对象,该对象负责保存事件特有的信息。使用这个对象可以:

在脚本部件的代码中,调用 createEventObject 方法来创建事件对象的新实例,然后对这个新的事件对象设置一个或多个属性。当调用 fireEvent 方法时,可以用事件名称来传递这个新的事件对象。

要创建一个新的 expando 属性,只需在脚本中给其赋值时命名。下面演示了如何为事件对象创建一个名为 myprop 的新属性:

oEvent = createEventObject();
oEvent.myprop = "a new value"
注意   只有当使用 Microsoft® JScript® (或 JavaScript) 时才可以创建 expando 属性。Microsoft® Visual Basic® Scripting Edition (VBScript) 中不支持这一特性。

示例

下面的脚本部件片段是从 calculator 脚本部件示例中摘出来的。该示例定义了一个 onResultChange 事件,只要结果被更改,就会为包含文档激活这个事件。事件特有的信息(实际的计算结果)将通过称为 result 的 expando 属性来传递。

注意   CDATA 项是必需的,以使 <script> 元素中的脚本成为不透明的。详细信息请参阅脚本部件文件和 XML 一致性
<public>
   <event name="onResultChange" />
</public>

<implements type="Behavior">
   <attach event="onclick" handler="doCalc"/>
</implements>

<script language="JScript">
<![CDATA[
function doCalc()
{ 
   // 此处为进行计算的代码。结果写入
   // sResult 变量。
   oEvent = createEventObject();
   oEvent.result = sResult;
   fireEvent("onResultChange",oEvent);
}
]]>
</script>

下面演示了包含页面的样式。在 onResultChange 事件被激活时,就从 DHTML 的 window.event 对象的 expando 属性 result 提取出计算结果,并在 resultWindow <DIV> 元素中显示该结果。

<HTML>
<HEAD>
<xml:namespace prefix="LK" />
<style>
   LK\:CALC {behavior:url(calc.wsc)}
</style>
<script language="JScript">
function showResults(){
   resultWindow.innerText=window.event.result;
}
</script>
</HEAD>

<LK:CALC id="myCalc" onResultChange="showResults()">
<TABLE>
<TR>
   <DIV ID=resultWindow 
      STYLE="border: '.025cm solid gray'" 
      ALIGN=RIGHT>0.</DIV>
</TR>
<TR>
   <TD><INPUT TYPE=BUTTON VALUE=" 0 "></TD>
   <TD><INPUT TYPE=BUTTON VALUE="+/-"></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" . "></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" + "></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" = "></TD>
<TR>
</TABLE>
</LK:CALC>
</HTML>

请参阅

在 Behavior 脚本部件中说明属性和方法