clientX & clientY with IE7 - I can't go sideways!! Help?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Head In A Pan
    New Member
    • Mar 2007
    • 25

    clientX & clientY with IE7 - I can't go sideways!! Help?

    Hello -
    Yes - I know floating/persistent layers can be yucky - but for this project it is only tiny and contains some xy mouse coordinates for a map...
    buy anyway - here's my problem:

    I have a javascript that keeps the layer persistent for the HEIGHT, but not WIDTH in IE7.
    Of course it works great in the other browsers... Can anyone see what is wrong with the script? Any help would be so good - I have tried everything my limited knowledge will allow!

    Code:
    <!--Here is where Part the XY Script starts-->
    <div id="divBottomLeft"  style="position:absolute">
    
    <!--        MY Layer contents          -->
    
    </div>
    
    <!--Below is the troublesome floating layer script-->
    
    <script type="text/javascript">
    var ns = (navigator.appName.indexOf("Netscape") != -1);
    var d = document;
    var px = document.layers ? "" : "px";
    function JSFX_FloatDiv(id, sx, sy)
    {
    	var el=d.getElementById?d.getElementById(id):d.all?d.all[id]:d.layers[id];
    	window[id + "_obj"] = el;
    	if(d.layers)el.style=el;
    	el.cx = el.sx = sx;el.cy = el.sy = sy;
    	el.sP=function(x,y){this.style.left=x+px;this.style.top=y+px; this.style.right=y+px; this.style.bottom=y+px;};
    	el.flt=function()
    	{
    		var pX, pY;
    		pX = ns ? pageXOffset : document.documentElement && document.documentElement.scrollLeft ? 
    		document.documentElement.scrollLeft : document.body.scrollLeft;
    		if(this.sx<0) 
    		pX += ns ? innerWidth : document.documentElement && document.documentElement.clientX ? 
    		document.documentElement.clientX : document.body.clientX;
    		pY = ns ? pageYOffset : document.documentElement && document.documentElement.scrollTop ? 
    		document.documentElement.scrollTop : document.body.scrollTop;
    		if(this.sy<0) 
    		pY += ns ? innerHeight : document.documentElement && document.documentElement.clientY ? 
    		document.documentElement.clientY : document.body.clientY;
    		this.cx += (pX + this.sx - this.cx)/8;this.cy += (pY + this.sy - this.cy)/8;
    		this.sP(this.cx, this.cy);
    		setTimeout(this.id + "_obj.flt()", 40);
    	}
    	return el;
    }
    
    JSFX_FloatDiv("divBottomLeft",    5, -40).flt();
    
    
    </script>
  • Head In A Pan
    New Member
    • Mar 2007
    • 25

    #2
    Oops! Still buggered but have changed clientX etc to clientWidth etc
    so now it's:

    Code:
    <!--Here is where Part the XY Script starts-->
    <div id="divBottomLeft"  style="position:absolute">
    <form name=ee><input name=sd type=text style="color: white; background-color: #706d66" size="8"> 
    </input>
    </form>
    
    <!--        My layer content          -->
    </div>
    
    
    
    <!--Below is the floating layer script-->
    
    <script type="text/javascript">
    var ns = (navigator.appName.indexOf("Netscape") != -1);
    var d = document;
    var px = document.layers ? "" : "px";
    function JSFX_FloatDiv(id, sx, sy)
    {
    	var el=d.getElementById?d.getElementById(id):d.all?d.all[id]:d.layers[id];
    	window[id + "_obj"] = el;
    	if(d.layers)el.style=el;
    	el.cx = el.sx = sx;el.cy = el.sy = sy;
    	el.sP=function(x,y){this.style.left=x+px;this.style.top=y+px; this.style.right=y+px; this.style.bottom=y+px;};
    	el.flt=function()
    	{
    		var pX, pY;
    		pX = ns ? pageXOffset : document.documentElement && document.documentElement.scrollLeft ? 
    		document.documentElement.scrollLeft : document.body.scrollLeft;
    		if(this.sx<0) 
    		pX += ns ? clientWidth : document.documentElement && document.documentElement.clientWidth ? 
    		document.documentElement.clientWidth : document.body.clientWidth;
    		
    		pY = ns ? pageYOffset : document.documentElement && document.documentElement.scrollTop ? 
    		document.documentElement.scrollTop : document.body.scrollTop;
    		if(this.sy<0) 
    		pY += ns ? innerHeight : document.documentElement && document.documentElement.clientHeight ? 
    		document.documentElement.clientHeight : document.body.clientHeight;
    		this.cx += (pX + this.sx - this.cx)/8;this.cy += (pY + this.sy - this.cy)/8;
    		this.sP(this.cx, this.cy);
    		setTimeout(this.id + "_obj.flt()", 40);
    	}
    	return el;
    }
    
    JSFX_FloatDiv("divBottomLeft",    5, -40).flt();
    
    
    </script>

    Comment

    • acoder
      Recognized Expert MVP
      • Nov 2006
      • 16032

      #3
      Does this link help?

      Comment

      • Head In A Pan
        New Member
        • Mar 2007
        • 25

        #4
        Originally posted by acoder
        Does this link help?
        Thanks mate -
        I'll attempt to fit that function into my code -

        I'm just not so clued in with js. I kind of get the concepts (as my actionscripting is coming along nicely... better anyway)
        But I'm not absolutely sure how to make this function slot into my (borrowed) code. ;)

        Comment

        Working...