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 がページにレンダリングされた後、次の 2 行のコードを呼び出します。

//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 はスクロールを考慮していません。すぐに使用できるファイルやサポートが壊れているファイルに触れるべきではないため、ActiveX NameControl をプレゼンス用に設定する独自の JavaScript をハックすることをお勧めします。私は修正の功績を認めることはできません。グーグルで見つけました。残念ながら、それについてどこで読んだか思い出せません。

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 のサンプル「Presence in Web Applications」に付属する JavaScript をハッキングしてみてください 。スクロールの問題に対して同じ修正を適用する必要があることに注意してください。

幸運を:)

于 2010-07-08T23:04:35.560 に答える