2

我目前正在实现显示搜索结果的基于 AJAX 的 Web 部件。此搜索结果具有用户名,并且与我正在呈现 OCS 存在指示器的每个名称相反。该指标在 IE6 中运行良好,但我无法在 IE7/8 中运行。

基本上,IE7/8 中的问题是渲染了 OCS,但是当您将鼠标悬停在它上面时,什么也没有显示。如果您尝试向下滚动页面,然后将鼠标悬停在 OCS 图标上,您将在页面底部看到 OCS 操作菜单,而不是在用户名的对面看到它。

我的基于 AJAX 的 Web 部件使用 jQuery post 方法向服务器发出请求并接收 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 中不起作用?

4

1 回答 1

1

我确定错位的状态控件是由 SharePoint 2007 中的错误 init.js 引起的。init.js 不考虑滚动。由于您不应该接触开箱即用和中断支持的文件,因此您可能想要破解您自己的 JavaScript 来设置 ActiveX NameControl 的存在。我不能把修复归功于我。我通过谷歌搜索找到了它。不幸的是,我不记得我在哪里读到它了。

如果你必须破解 SharePoint 2007 的 init.js,你可能想试试这个:

在函数 IMNShowOOUI(inputType) 中,

我会改变这些行:

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

到以下:

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

而不是 init.js,您可能想尝试破解 MS 示例“Web 应用程序中的存在”附带的 JavaScript 请注意,您必须对滚动问题应用相同的修复程序。

祝你好运:)

于 2010-07-08T23:04:35.560 回答