Firefox absolute positioning stopped working

Gary Stainburn gary.stainburn at ringways.co.uk
Mon Nov 11 15:43:05 UTC 2013


Hi folks,

Sorry if this is O.T. but I only seem to be having the problem on my Fedora 
workstations.

I use popup div's in my web pages - div's that are initally display:none but 
then on an event have their absolute size and position changed.

This method worked fine until recently (not sure how recent, but it's been 
broken for a couple of weeks at least). It still works in I.E., Chrome and 
Firefox on Win7 PC's.

However, on my Fedora workstations, the div is no longer appearing in the 
right place (top left corner appearing where mouse pointer is). It now 
appears on the very left corner of the window.

The only thing I can think of is that my Fedora boxes are regularly updated 
while my Windows PC's only get software updates occassionally. This would 
point to the problem being a recent firefox update.

Can anyone help as Google is only showing me old items.

Gary

HTML

<body bgcolor="white" >
<div id='hoverpopup' style='visibility:hidden; position: absolute; 
width:200px; border:1px solid #000000; background-color:#ffffff;' 
onMouseOver='Keeppopup(this);' onMouseOut='Hidepopup();'></div>

.............
<table id=vista width=100% onMouseOver="vistaTableMouseOver(event);" 
onMouseOut="vistaTableMouseOut(event);" onclick="vistaTableClick(event);">

JAVASCRIPT (called from onMouseOver
function vistaTableMouseOver(e) {
  if (!e)
    return;
  var t=e;
  if (!t.id) { // event mode
    if (e && ((t = e.target) || (t = e.srcElement))) {
    while (! t.id && t.parentNode && t.nodeName != 'TR')
      t=t.parentNode;
    }
  }
  if (!t.id) 
    return;
  var windowLowerX=window.innerWidth;
  var windowLowerY=window.innerHeight;
  if (e.clientX) { // store target X/Y
    var vistaDivX=e.clientX;  // location of mouse click
    var vistaDivY=e.clientY;
  } else {
    var vistaDivX=findX(t); // location of TD
    var vistaDivY=findY(t);
  }

  var vistaKey=t.id;
  var hp = document.getElementById("hoverpopup");
  hp.style.width='200px';
  hp.innerHTML='Please wait....';
  var xOffset=vistaDivX+20;
  var yOffset=vistaDivY+10;
  var divLowerX=vistaDivX+200;
  var divLowerY=vistaDivY+hp.clientHeight;
  // ensure the div is visible, i.e. not off the right / bottom
  if (divLowerY > windowLowerY) {
    yOffset=window.innerHeight-(hp.clientHeight+10);
  }
  if (divLowerX > windowLowerX) {
    xOffset=window.innerWidth-(hp.clientWidth+10);
  }

}



-- 
Gary Stainburn
Group I.T. Manager
Ringways Garages
http://www.ringways.co.uk 


More information about the users mailing list