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