Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一次状态更改在lync中多次触发getstatus_Javascript_Jquery_Html_Lync - Fatal编程技术网

Javascript 一次状态更改在lync中多次触发getstatus

Javascript 一次状态更改在lync中多次触发getstatus,javascript,jquery,html,lync,Javascript,Jquery,Html,Lync,我使用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) {

我使用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>

Lync存在测试
如果(Instant.nameCtl.PresenceEnabled){
Instant.nameCtl.OnStatusChange=Instant.OnStatusChange;
Instant.nameCtl.GetStatus(Instant.sipUri,“1”);
}
名称
正如标题所述,如果我加载页面,就会触发事件,并获得人们所期望的状态代码。但是,如果我更改状态,将触发两个事件。第一个包含正确的状态代码,第二个包含旧的状态代码。这里的问题是,我想更改为新状态,但陈旧状态是最后一个要触发的事件,因此它会覆盖新的更改。当我将鼠标悬停在此人的名字上时,该事件也会触发6次

Microsoft关于Name.NameCtrl对象的文档非常稀少,但据我所知,getstatus方法和onstatuschange属性正是我要寻找的

那么,statuschange事件触发两次是否有原因,是否有办法抢占该事件或切换返回事件的顺序?另外,如果您将鼠标悬停在名称上,为什么会触发事件,因为没有发生状态更改?我想了解有关特定状态更改事件的更多信息,但我找不到任何信息。我也没有访问lync服务器的权限,因此我必须进行客户端设置

Name.NameCtrl文档:


在那里我得到了状态功能的代码:

许多事件触发;但是,警报无法准确了解上次触发的事件。事件按正确的顺序进行。我刚刚在代码中添加了一个switch语句来处理更改图片bas