Присутствие OCS в веб-части на основе SharePoint AJAX - PullRequest
2 голосов
/ 15 июня 2010

В настоящее время я использую веб-часть на основе AJAX, которая отображает результаты поиска. Этот результат поиска имеет имена пользователей, и напротив каждого имени я отображаю индикатор присутствия OCS. Этот индикатор отлично работает в IE6, но я не могу заставить его работать в IE7 / 8.

В основном проблема в IE7 / 8 заключается в том, что OCS визуализируется, но при наведении мыши на него ничего не отображается. Если вы попытаетесь прокрутить страницу вниз, наведите курсор мыши на значок OCS, вы увидите меню действий OCS внизу страницы вместо того, чтобы видеть его напротив имени пользователя.

Моя веб-часть на основе AJAX использует метод post jQuery для отправки запроса на сервер и получения json, который затем передается в div.

Мой HTML для имени пользователя выглядит так:

<nobr>
    <span>
        <a target='_blank' href='/ViewExpert.aspx?uid=4'>Some Expert</a>
            <img height='1' width='3' border='0' alt='' src='/_layouts/images/blank.gif'><a class='ms-imnlink'
                onclick='IMNImageOnClick();return false;' href='javascript:'>
            <img height='12' width='12' border='0' id='3' ShowOfflinePawn='1' type='smtp' sip='sip@sip.com'
                src='/_layouts/images/blank.gif' valign='middle' name='imnmark' alt='No presence information' title=''>
        </a>
    </span>
</nobr>

После того, как приведенный выше HTML-код отображается на странице, я вызываю следующие две строки кода:

//have to reset this value, otherwise ProcessImn() fails after next AJAX request
imnCount = 0;
ProcessImn();

Есть идеи, почему он не работает в IE7 / 8?

1 Ответ

1 голос
/ 09 июля 2010

Я уверен, что неуместные элементы управления присутствием вызваны ошибочным init.js в SharePoint 2007. init.js не учитывает прокрутку. Поскольку вам не следует трогать файлы, которые не входят в комплект поставки и не поддерживают его, вы можете захотеть взломать свой собственный JavaScript, который настраивает ActiveX NameControl для присутствия. Я не могу взять кредит на исправление. Я нашел это по Google. К сожалению, я не могу вспомнить, где я об этом читал.

Если вам необходимо взломать файл init.js в SharePoint 2007, вы можете попробовать это:

В функции IMNShowOOUI (inputType),

Я бы изменил строки с:

oouiX=objRet.oouiX;
oouiY=objRet.oouiY;

на следующее:

oouiX = (objRet.oouiX - document.body.parentNode.scrollLeft;
oouiY = (objRet.oouiY - document.body.parentNode.scrollTop; 

Вместо init.js вы можете попробовать взломать JavaScript, который поставляется с примером MS «Присутствие в веб-приложениях» Остерегайтесь того, что вам придется применить то же исправление для проблемы прокрутки .

Удачи:)

...