2010-06-15 2 views
2

Je suis en train de mettre en œuvre une partie Web basée sur AJAX qui affiche les résultats de la recherche. Ce résultat de recherche a des noms d'utilisateurs et en face de chaque nom je rends l'indicateur de présence OCS. Cet indicateur fonctionne très bien dans IE6 mais je n'arrive pas à le faire fonctionner dans IE7/8.Présence OCS dans le composant WebPart SharePoint AJAX

Fondamentalement, le problème dans IE7/8 est que OCS est rendu, mais lorsque vous passez la souris dessus, rien n'est montré. Si vous essayez de faire défiler la page vers le bas puis passez la souris sur l'icône OCS, vous verrez le menu Actions OCS en bas de la page au lieu de le voir à l'opposé du nom d'utilisateur.

Mon composant WebPart AJAX utilise la méthode post jQuery pour envoyer une requête au serveur et recevoir json qui est ensuite rendu au div.

Mon HTML pour le nom d'utilisateur ressemble à ceci:

<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='[email protected]' 
       src='/_layouts/images/blank.gif' valign='middle' name='imnmark' alt='No presence information' title=''> 
     </a> 
    </span> 
</nobr> 

Après le code HTML ci-dessus est rendu sur la page que j'appelle les deux lignes de code suivantes:

//have to reset this value, otherwise ProcessImn() fails after next AJAX request 
imnCount = 0; 
ProcessImn(); 

Toute idée pourquoi il ne fonctionne pas dans IE7/8?

+0

Bienvenue sur SO, s'il vous plaît ne pas oublier de visiter http://stackoverflow.com/faq – Reigel

+0

Que signifie 'ProcessImn()' faire? Ajoute-t-il/modifie-t-il le DOM, ou l'échantillon de code que vous avez affiché est-il le résultat final? – CBono

+0

ProcessImn() est la fonction déclarée dans le fichier init.js dans la ruche 12. Il applique l'icône et le menu OCS aux éléments avec un attribut de nom spécifique –

Répondre

1

Je suis sûr que les contrôles de présence mal placés sont causés par le bug.init.js dans SharePoint 2007. Le init.js ne tient pas compte du défilement. Puisque vous ne devez pas toucher aux fichiers prêts à l'emploi et rompre le support, vous pouvez vouloir pirater votre propre JavaScript qui configure ActiveX NameControl pour la présence. Je ne peux pas prendre le crédit pour le correctif. Je l'ai trouvé par Googling. Malheureusement, je ne me souviens pas où j'ai lu à ce sujet.

Si vous devez pirater les init.js de SharePoint 2007, vous pouvez essayer ceci:

En fonction IMNShowOOUI (inputType),

je changerais les lignes de:

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

au suivant:

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

Plutôt que init.js, vous pouvez essayer piratage du JavaScript fourni avec l'exemple MS "Presence in Web Applications" Attention, vous devrez appliquer le même correctif pour le problème de défilement.

Bonne chance :)

Questions connexes