MOSS Presence indicator

Presence indicator problem with Custom Master Page scrollingProblem:

I have got a unique problem that when you hover over any contact, the actual presence icon appears several pixels below the actual icon.

This only happens when the page is scrolled down and works perfectly when the page is not in scrolled position.

Also, it works fine when I apply the default master page to the site.

 

 

Solution 1:
The problem is identified sometimes back with the init.js function IMNGetOOUILocation() that returns a fixed location (coordinate) 0, and probably this is causing issue in your custom master page scenario also.

Add this function in the master page, to check if that resolves the issue you are having:

****************************************************************************************************************************************

 

function IMNGetOOUILocation(obj)

{

var objRet=new Object;

var objSpan=obj;

var objOOUI=obj;

var oouiX=0, oouiY=0, objDX=0;

 

// Changed Fixed scroll up coordination problem due to master page

var scrollTopY = (document.documentElement &&

document.documentElement.scrollTop) ? document.documentElement.scrollTop :

(document.body.scrollTop ? document.body.scrollTop : 0);

var fRtl=document.dir=="rtl";

 

while (objSpan && objSpan.tagName !="SPAN" && objSpan.tagName

!="TABLE")

{

objSpan=objSpan.parentNode;

}

if (objSpan)

{

var collNodes=objSpan.tagName=="TABLE" ?

objSpan.rows(0).cells(0).childNodes

:

objSpan.childNodes;

var i;

for (i=0; i < collNodes.length;++i)

{

if

(collNodes.item(i).tagName=="IMG" && collNodes.item(i).id)

{

 

objOOUI=collNodes.item(i);

break;

}

if (collNodes.item(i).tagName=="A"

&&

 

collNodes.item(i).childNodes.length > 0 &&

 

collNodes.item(i).childNodes.item(0).tagName=="IMG" &&

 

collNodes.item(i).childNodes.item(0).id)

{

 

objOOUI=collNodes.item(i).childNodes.item(0);

break;

}

}

}

obj=objOOUI;

while (obj)

{

if (fRtl)

{

if (obj.scrollWidth

>=obj.clientWidth+obj.scrollLeft)

 

objDX=obj.scrollWidth - obj.clientWidth - obj.scrollLeft;

else

 

objDX=obj.clientWidth+obj.scrollLeft - obj.scrollWidth;

oouiX+=obj.offsetLeft+objDX;

}

else

oouiX+=obj.offsetLeft -

obj.scrollLeft;

// Changed Fixed scroll up coordination problem due to master page

//oouiY+=obj.offsetTop - obj.scrollTop;

oouiY+=obj.offsetTop;

 

obj=obj.offsetParent;

}

try

{

obj=window.frameElement;

while (obj)

{

if (fRtl)

{

if (obj.scrollWidth

>=obj.clientWidth+obj.scrollLeft)

 

objDX=obj.scrollWidth - obj.clientWidth - obj.scrollLeft;

else

 

objDX=obj.clientWidth+obj.scrollLeft - obj.scrollWidth;

 

oouiX+=obj.offsetLeft+objDX;

}

else

 

oouiX+=obj.offsetLeft - obj.scrollLeft;

// Changed Fixed scroll up coordination problem due to master page

// oouiY+=obj.offsetTop -

obj.scrollTop;

oouiY+=obj.offsetTop;

obj=obj.offsetParent;

}

} catch(e)

{

};

objRet.objSpan=objSpan;

objRet.objOOUI=objOOUI;

objRet.oouiX=oouiX;

 

//!!! This is the code change:

// Changed Fixed scroll up coordination problem due to

master page

//objRet.oouiY=oouiY

objRet.oouiY=oouiY - scrollTopY;

 

if (fRtl)

objRet.oouiX+=objOOUI.offsetWidth;

return objRet;

}

 

****************************************************************************************************************************************

 

Solution 2:

Also, there is another workaround , Add the following CSS:

body

{

                position:static;

}

 

form

{

                position:relative;

}