PDA

View Full Version : Floating Top Bar Script - Help with Opacity and setTimeout



shaunmacie
06-06-2007, 04:13 PM
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:


<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?

jscheuer1
06-07-2007, 05:52 AM
Change this:


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

to:


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:


#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);
}

userforum
03-02-2008, 04:38 PM
hello,

is it possible to use the timeout option to repeat the function?
something like:

setTimeout("staticbar()", 5000,50000,450000);

jscheuer1
03-02-2008, 06:41 PM
hello,

is it possible to use the timeout option to repeat the function?
something like:

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.

userforum
03-02-2008, 10:06 PM
sorry bumping the thread.
It's the same as here: http://www.dynamicdrive.com/forums/showthread.php?t=29979

thank you for any hint.