Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 5 of 5
  1. #1
    New to the CF scene
    Join Date
    Nov 2010
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts

    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 Attached Files

  • #2
    Supreme Master coder! Philip M's Avatar
    Join Date
    Jun 2002
    Location
    London, England
    Posts
    17,731
    Thanks
    202
    Thanked 2,508 Times in 2,486 Posts
    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.

  • #3
    New to the CF scene
    Join Date
    Nov 2010
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts
    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? =)

  • #4
    Supreme Master coder! Philip M's Avatar
    Join Date
    Jun 2002
    Location
    London, England
    Posts
    17,731
    Thanks
    202
    Thanked 2,508 Times in 2,486 Posts
    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>

  • #5
    New to the CF scene
    Join Date
    Nov 2010
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts
    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.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •