Присутствие OCS в веб-части на основе SharePoint AJAX

В настоящее время я использую веб-часть на основе 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 ответ

Я уверен, что неуместные элементы управления присутствием вызваны ошибочным 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 "Присутствие в веб-приложениях". Остерегайтесь того, что вам придется применить то же исправление для проблемы с прокруткой.

Удачи:)

Другие вопросы по тегам