/    Sign up×
Community /Pin to ProfileBookmark

Looking for help with window opacity and setTimeout

I want to use this script for a floating window, 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 code:

[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- &#65533; 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>[/CODE]

Any suggestions?

to post a comment
JavaScript

2 Comments(s)

Copy linkTweet thisAlerts:
@steveaJun 06.2007 — This isn't the most efficient method of doing it, but it works.

Add this function before the if's and else if's:

<i>
</i>function delay(){
setTimeout('staticbar()',2000);
}


Then replace where it calls staticbar in the onLoads to delay, like so:
<i>
</i>if (window.addEventListener)
window.addEventListener("load", delay, false)
else if (window.attachEvent)
window.attachEvent("onload", delay )
else if (document.getElementById)
window.onload=delay


Edit to add:

Forgot where I found this function, but it works well for setting the opacity cross-browser.
<i>
</i>function setOpacity(obj,opacity) { //for various browsers
opacity=(opacity==100)?99.999:opacity;
obj.style.filter="alpha(opacity:"+opacity+")";
obj.style.KHTMLOpacity=opacity/100;
obj.style.MozOpacity=opacity/100;
obj.style.opacity=opacity/100;
}


You would call that right after the setTimeout call, like so:

<i>
</i>setOpacity( document.getElementById('topbar') , 90 );


(Though in testing I found 90 to not be a very effective opacity, but to each his own ?
Copy linkTweet thisAlerts:
@shaunmacieauthorJun 06.2007 — efficient or not, it works, and that's all I need!

Thanks for the help - here is the test page in action:

http://www.campuscalm.com/float.html
×

Success!

Help @shaunmacie spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.21,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @AriseFacilitySolutions09,
tipped: article
amount: 1000 SATS,

tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,
)...