我正在使用ActiveXObject来处理lync状态更改并通过下面的javascript显示状态
var Instant = {
sipUri: "name@address.com", // Change this to the user's SIP URI you want to chat with
nameCtl: new ActiveXObject('Name.NameCtrl.1'),
onStatusChange: function (name, status, id) {
alert(name + " " + status + " " +id);
},
showOOUI: function () {
var oouiX = 0, oouiY = 0;
oouiX += pawn_icon.offsetLeft + pawn_icon.clientLeft - pawn_icon.scrollLeft;
oouiY += pawn_icon.offsetTop + pawn_icon.clientTop - pawn_icon.scrollTop;
Instant.nameCtl.ShowOOUI(Instant.sipUri, 0, oouiX, oouiY);
},
hideOOUI: function () {
Instant.nameCtl.HideOOUI();
}
}
这个html / javascript实际上将事件处理程序注册到事件:
<head>
<title>Lync Presence Test</title>
<!-- le JS -->
<script type="text/javascript">
if (Instant.nameCtl.PresenceEnabled) {
Instant.nameCtl.OnStatusChange = Instant.onStatusChange;
Instant.nameCtl.GetStatus(Instant.sipUri, "1");
}
</script>
</head>
<body>
<div id="presence" onmouseover="Instant.showOOUI()" onmouseout="Instant.hideOOUI()">Name<img id="pawn" name="pawn_icon" src="Styles/images/LyncStatus/imnon.png" alt="Available"> </div>
</body>
</html>
正如标题所述,如果我加载页面,我会触发事件并获得状态代码,就像人们期望的那样。但是,如果我改变我的状态,则会触发两个事件。第一个包含正确的状态代码,第二个包含旧的状态代码。这里的问题是我想要更改为新状态,但过时的是要触发的最后一个事件,因此它会覆盖新的更改。当我将鼠标移到该人的名字上时,该事件也会发生6次。
Microsoft的Name.NameCtrl对象文档非常稀疏,但据我了解getstatus方法和onstatuschange属性,它们正是我正在寻找的。
那么,是否有一个原因导致statuschange事件触发两次,是否有办法抢占这个或切换返回的事件的顺序?此外,如果您将鼠标悬停在名称上,为什么会触发事件,因为没有发生状态更改?我想了解更多有关特定状态更改事件的信息,但我找不到任何内容。我也无法访问lync服务器,因此我必须进行客户端设置。
Name.NameCtrl文档:http://msdn.microsoft.com/en-us/library/bb802706(v=office.14).aspx
我获取了状态功能的代码:http://blog.instant-tech.com/2012/05/web-client-for-microsoft-lync-2010.html
答案 0 :(得分:0)
许多事件开火;但是,警报无法准确了解最后触发的事件。事件按照正确的顺序发射。我刚刚在代码中添加了一个switch语句来处理更改图片bas