Go Back   CodingForums.com > :: Client side development > JavaScript programming

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 11-16-2010, 10:36 AM   PM User | #1
pafke
New to the CF scene

 
Join Date: Nov 2010
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
pafke is an unknown quantity at this point
Javascript/Flash error

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:

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?
Attached Files
File Type: zip banner_test.zip (17.1 KB, 56 views)
pafke is offline   Reply With Quote
Old 11-16-2010, 11:09 AM   PM User | #2
Philip M
Supreme Master coder!

 
Philip M's Avatar
 
Join Date: Jun 2002
Location: London, England
Posts: 17,037
Thanks: 197
Thanked 2,411 Times in 2,389 Posts
Philip M has a spectacular aura aboutPhilip M has a spectacular aura aboutPhilip M has a spectacular aura about
That code is absurdly antique and utterly obsolete. IE4 and NS4 have long been one with Nineveh and Tyre.

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.
Philip M is online now   Reply With Quote
Old 11-16-2010, 11:40 AM   PM User | #3
pafke
New to the CF scene

 
Join Date: Nov 2010
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
pafke is an unknown quantity at this point
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? =)
pafke is offline   Reply With Quote
Old 11-16-2010, 12:39 PM   PM User | #4
Philip M
Supreme Master coder!

 
Philip M's Avatar
 
Join Date: Jun 2002
Location: London, England
Posts: 17,037
Thanks: 197
Thanked 2,411 Times in 2,389 Posts
Philip M has a spectacular aura aboutPhilip M has a spectacular aura aboutPhilip M has a spectacular aura about
Try this (use buttons to test):-


Code:
<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>
Philip M is online now   Reply With Quote
Old 11-16-2010, 06:53 PM   PM User | #5
pafke
New to the CF scene

 
Join Date: Nov 2010
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
pafke is an unknown quantity at this point
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.
pafke is offline   Reply With Quote
Reply

Bookmarks

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 07:51 AM.


Advertisement
Log in to turn off these ads.