This Domain(Admin5.com) is for Sale:

一些奇特的 JavaScript 功能

时间:2007-10-22  来源:不详  作者:林子

在确保控件正确实例化以后,代码需要做的第一件事情是确定用户是否联机。这是通过检查 Messenger Object 的 LocalState 属性来完成的。该属性从 MSTATE 枚举(其定义已部分包含在我们的代码中)返回一个值。如果用户未联机,我们将启用调用 Messenger Application 的 LaunchLogonUI 方法的登录按钮。如果用户已联机,则我们需要使用用户的所有联系人来填充 DIV。为此,我们循环访问默认列表 (List(0)) 中的每个联系人,并检索其 FriendlyName 以及描述其当前状态的 MSTATE 值,然后新建一个包含此信息的 DIV。

copyright dedecms

由于我们要允许用户通过单击列表中的任何联系人来向该联系人发送消息,因此需要以编程方式将 onclick 事件处理程序附加到新 DIV。该事件处理程序函数 ( sendMessage ) 基本上是 Messenger Application 的 LaunchIMUI 方法的包装。由于 LaunchIMUI 将目标联系人作为一个参数,因此我们需要能够确定 Messenger Object 的默认列表中的哪个联系人与被单击的 DIV 对应。这时最理想的是使用 expando 属性。我们将联系人在默认列表中的索引附加到新建的、表示该联系人的 DIV 元素。这样,onclick 处理程序就能够检索到此索引,然后从 Messenger Object 的列表中抽取正确的联系人并将其传递给 LaunchIMUI

内容来自dedecms

本示例包含的一项额外功能是在该页加载后处理注销和登录。这是通过处理由 Messenger Object 激发的 OnLocalStateChangeResult 事件来完成的。此事件在 LocalState 属性更改时激发(并不太意外)。因此,相应地,我们仅仅查看我们已脱机还是已联机。如果已脱机,需要清空联系人 UI 列表;如果已联机,需要在短暂的 setTimeout(确保一切都正确同步)之后调用 populateContacts 。而且由于 ActiveX 控件依赖于独立 Messenger 的运行实例,因此我们的页面还将更新以响应它触发的事件。

本文来自织梦

至此,您可能已对我们的喋喋不休感到厌烦,那么,请看下面的代码。 本文来自织梦

<HTML>
<HEAD>
<TITLE>Embedding MSN Messenger Test</TITLE>
<OBJECT CLASSID="clsid:F3A614DC-ABE0-11d2-A441-00C04F795683"
CODEBASE="#Version=2,0,0,83"
CODETYPE="application/x-oleobject" ID="oMsgrObj" WIDTH="0"
HEIGHT="0" OnUserStateChanged="alert();">
</OBJECT>

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容