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