PDA

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.