...

View Full Version : Javascript/Flash error



pafke
11-16-2010, 10:36 AM
Hi,
I'm currently working on a Flash pop-up that can be integrated in several websites. I'm currently testing the code. I've got a flash file with a semi-transparant background that loads over the complete page, it also closes the div with the flash content once the end of the swf is reached.

The thing is, I want to prevent the user from scrolling whilst the swf is active. That's why I disabled the overflow-Y.

Now I've got a javascript code that is supposed to change the body's overflow to visible again, and I'm calling to this code in the same frame as where I disable the div with the flash in it.

But for some reason it isn't working.

This is my complete Javascript code:



<script type="text/javascript">
<!-- Original: Gregor (legreg@legreg.de) -->
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

var ie4 = (document.all) ? true : false;
var ns4 = (document.layers) ? true : false;
var ns6 = (document.getElementById && !document.all) ? true : false;


function hidelayer(lay) {
if (ie4) {document.all[lay].style.visibility = "hidden";}
if (ns4) {document.layers[lay].visibility = "hide";}
if (ns6) {document.getElementById([lay]).style.display = "none";}
}

function writetolayer(lay,txt) {
if (ie4) {
document.all[lay].innerHTML = txt;
}
if (ns4) {
document[lay].document.write(txt);
document[lay].document.close();
}
if (ns6) {
over = document.getElementById([lay]);
range = document.createRange();
range.setStartBefore(over);
domfrag = range.createContextualFragment(txt);

while (over.hasChildNodes()) {
over.removeChild(over.lastChild);
}
over.appendChild(domfrag);
}
}


<!-- This is the part I added which I thought would show the scrollbar again after the flashpopup is finished -->
function showbar(){
document.getElementsByName('body')[0].style.overflowY = 'visible';
}

</script>




And in the final frame of my flash animation I first stop the swf, and then call to both functions:

//stops the movie
stop();

//this is the code that triggers the function to hide the div, and the function that should show the scrollbar

getURL("javascript:showbar();");
getURL("javascript:hidelayer('newlayer');");


I've also got an online webtest here:
http://www.haragara.com/banner_test/

And I've included all the files in a zip

Can anyone tell me what I'm doing wrong?

Philip M
11-16-2010, 11:09 AM
That code is absurdly antique and utterly obsolete. IE4 and NS4 have long been one with Nineveh and Tyre. :D

Try:-

document.getElementsByName('body')[0].style.visibility = 'visible';


All advice is supplied packaged by intellectual weight, and not by volume. Contents may settle slightly in transit.

pafke
11-16-2010, 11:40 AM
I want the body to be visible, I only want to hide the scroll bar, that's why I need to use


body
{
overflow-y:hidden;
}

to hide the scrollbar.

And the code is antique indeed, but I'm rather crappy at javascript and this worked, so I figured, no need to change it right? =)

Philip M
11-16-2010, 12:39 PM
Try this (use buttons to test):-



<input type = "button" value = "Hide Scrollbar" onclick = "hideBar()"><br>
<input type = "button" value = "Restore Scrollbar" onclick = "showBar()"><br><br>

<script type = "text/javascript">
for (var i = 1; i<=40; i++) {
document.write("TEXT LINE " + i + "<br>");
}
</script>

<script type = "text/javascript">

function hideBar() {
if (document.all) {document.body.scroll = "no"}
else {
var oTop = document.body.scrollTop;
document.body.style.overflow = "hidden";
document.body.scrollTop = oTop;
}
}

function showBar(){
document.body.scroll = "";
document.body.style.overflow = "";
}

</script>

pafke
11-16-2010, 06:53 PM
well that works, but only if I don't put the overflow to hidden in the css =(.

So now I've got the correct code but I don't know how to make it work for my situation =(.

Do you think it would work if I'd put the body overflow to hidden with CSS?

Don't know how yet though.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum