Results 1 to 5 of 5

Thread: Floating Top Bar Script - Help with Opacity and setTimeout

  1. #1
    Join Date
    Jun 2007
    Posts
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Question Floating Top Bar Script - Help with Opacity and setTimeout

    1) Script Title: Floating Top Bar Script

    2) Script URL (on DD): http://dynamicdrive.com/dynamicindex17/floatbar.htm

    3) Describe problem: I want to use this script, but I want it to appear about 10 seconds after the page is loaded. I know it can be done with the setTimeout function, but I don't have a clue of the proper place it should go to work. I tried a bunch of different things but it doesn't work when I hack into the code (I'm a script noobie).

    As a bonus, I would love to be able to reduce the opacity of the window to around 90%, but that would just be icing on the cake!

    Here is the script as-is without any changes from the original:

    Code:
    <style type="text/css">
    
    #topbar{
    position:absolute;
    border: 1px solid black;
    padding: 2px;
    background-color: lightyellow;
    width: 620px;
    visibility: hidden;
    z-index: 10;
    }
    
    </style>
    
    <script type="text/javascript">
    
    
    /***********************************************
    * Floating Top Bar script- � Dynamic Drive (www.dynamicdrive.com)
    * Sliding routine by Roy Whittle (http://www.javascript-fx.com/)
    * This notice must stay intact for legal use.
    * Visit http://www.dynamicdrive.com/ for full source code
    ***********************************************/
    
    var persistclose=0 //set to 0 or 1. 1 means once the bar is manually closed, it will remain closed for browser session
    var startX = 30 //set x offset of bar in pixels
    var startY = 50 //set y offset of bar in pixels
    var verticalpos="fromtop" //enter "fromtop" or "frombottom"
    
    function iecompattest(){
    return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
    }
    
    function get_cookie(Name) {
    var search = Name + "="
    var returnvalue = "";
    if (document.cookie.length > 0) {
    offset = document.cookie.indexOf(search)
    if (offset != -1) {
    offset += search.length
    end = document.cookie.indexOf(";", offset);
    if (end == -1) end = document.cookie.length;
    returnvalue=unescape(document.cookie.substring(offset, end))
    }
    }
    return returnvalue;
    }
    
    function closebar(){
    if (persistclose)
    document.cookie="remainclosed=1"
    document.getElementById("topbar").style.visibility="hidden"
    }
    
    function staticbar(){
    
    	barheight=document.getElementById("topbar").offsetHeight
    	var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
    	var d = document;
    	function ml(id){
    		var el=d.getElementById(id);
    		if (!persistclose || persistclose && get_cookie("remainclosed")=="")
    		el.style.visibility="visible"
    		if(d.layers)el.style=el;
    		el.sP=function(x,y){this.style.left=x+"px";this.style.top=y+"px";};
    		el.x = startX;
    		if (verticalpos=="fromtop")
    		el.y = startY;
    		else{
    		el.y = ns ? pageYOffset + innerHeight : iecompattest().scrollTop + iecompattest().clientHeight;
    		el.y -= startY;
    		}
    		return el;
    	}
    	window.stayTopLeft=function(){
    		if (verticalpos=="fromtop"){
    		var pY = ns ? pageYOffset : iecompattest().scrollTop;
    		ftlObj.y += (pY + startY - ftlObj.y)/8;
    		}
    		else{
    		var pY = ns ? pageYOffset + innerHeight - barheight: iecompattest().scrollTop + iecompattest().clientHeight - barheight;
    		ftlObj.y += (pY - startY - ftlObj.y)/8;
    		}
    		ftlObj.sP(ftlObj.x, ftlObj.y);
    		setTimeout("stayTopLeft()", 10);
    	}
    	ftlObj = ml("topbar");
    	stayTopLeft();
    }
    
    if (window.addEventListener)
    window.addEventListener("load", staticbar, false)
    else if (window.attachEvent)
    window.attachEvent("onload", staticbar)
    else if (document.getElementById)
    window.onload=staticbar
    </script>
    
    
    
    </head>
    
    <body bgcolor="#7FC31C" topmargin="25" >
    <div id="topbar">
    <a href="" onClick="closebar(); return false"><img src="close.gif" border="0" /></a>
    Your content here.
    </div>
    Anyone know of a quick addition that I can use?

  2. #2
    Join Date
    Mar 2005
    Location
    SE PA USA
    Posts
    30,495
    Thanks
    82
    Thanked 3,449 Times in 3,410 Posts
    Blog Entries
    12

    Default

    Change this:

    Code:
    if (window.addEventListener)
    window.addEventListener("load", staticbar, false)
    else if (window.attachEvent)
    window.attachEvent("onload", staticbar)
    else if (document.getElementById)
    window.onload=staticbar
    to:

    Code:
    function beginstaticbar(){
    setTimeout("staticbar()", 5000);
    }
    
    if (window.addEventListener)
    window.addEventListener("load", beginstaticbar, false)
    else if (window.attachEvent)
    window.attachEvent("onload", beginstaticbar)
    else if (document.getElementById)
    window.onload=beginstaticbar
    The value 5000 is the number of milliseconds delay, 5000 = 5 seconds. Adjust as desired.

    Now, about making the window 90% opacity, I'm not sure what you mean. To make the bar 90% opacity:

    Code:
    #topbar{
    position:absolute;
    border: 1px solid black;
    padding: 2px;
    background-color: lightyellow;
    width: 620px;
    visibility: hidden;
    z-index: 100;
    opacity:0.90;
    filter:alpha(opacity=90);
    }
    - John
    ________________________

    Show Additional Thanks: International Rescue Committee - Donate or: The Ocean Conservancy - Donate or: PayPal - Donate

  3. #3
    Join Date
    Sep 2007
    Posts
    8
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    hello,

    is it possible to use the timeout option to repeat the function?
    something like:
    Code:
    setTimeout("staticbar()", 5000,50000,450000);

  4. #4
    Join Date
    Mar 2005
    Location
    SE PA USA
    Posts
    30,495
    Thanks
    82
    Thanked 3,449 Times in 3,410 Posts
    Blog Entries
    12

    Default

    Quote Originally Posted by userforum View Post
    hello,

    is it possible to use the timeout option to repeat the function?
    something like:
    Code:
    setTimeout("staticbar()", 5000,50000,450000);
    This is rather an old thread, if you have something specific in mind, start a new thread in the appropriate forum.

    The short answer is no, not like that.

    A slightly longer answer is that an interval can be setup, or a series of timeouts or a timeout that calls a function that calls the timeout (or another timeout) when it finishes, and loops. All these things can be done, but make no sense with this particular function, which, once it runs, loads up the menu. You wouldn't want the menu loading up more than once.
    - John
    ________________________

    Show Additional Thanks: International Rescue Committee - Donate or: The Ocean Conservancy - Donate or: PayPal - Donate

  5. #5
    Join Date
    Sep 2007
    Posts
    8
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    sorry bumping the thread.
    It's the same as here: http://www.dynamicdrive.com/forums/s...ad.php?t=29979

    thank you for any hint.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •