我目前正在实现显示搜索结果的基于AJAX的web部件。这个搜索结果包含用户名,与每个名称相对的是OCS在线状态指示器。这个指示器在IE6中工作得很好,但我不能让它在IE7/8中工作。
基本上,IE7/8中的问题是渲染了OCS,但当您将鼠标悬停在它上面时,什么也不会显示。如果您尝试向下滚动页面,然后将鼠标放在OCS图标上,您将在页面底部看到OCS操作菜单,而不是在用户名的对面。
我的基于AJAX的web部件使用json post方法向服务器发出请求,并接收jQuery,然后将其呈现给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中不能工作吗?
发布于 2010-07-09 07:04:36
我确信错误放置的状态控件是由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 example "Presence in Web Applications"附带的JavaScript,但请注意,您将不得不对滚动问题应用相同的修复程序。
祝你好运:)
https://stackoverflow.com/questions/3043700
复制相似问题