2011-07-12 3 views
0

Essentiellement, il est censé être un iFrame de défilement, qui, une fois qu'il touche le fond, se réinitialise vers le haut. Ces fonctions fonctionnent toutes très bien. Cependant, (notez que c'est dans un fichier .asp) J'ai aussi besoin d'une fonction qui, lorsque l'utilisateur passe la souris sur la fenêtre, arrête le défilement. Cela fonctionne, mais quand l'utilisateur se déplace autour de la fenêtre, ne gardant pas sa souris immobile, le défilement se produit, en fait, il défile même plus vite. Aucune suggestion?Faire défiler la fenêtre Fait défiler sur Mouseover

<html> 
    <head> 
     <link href="intranet.css" rel="stylesheet" type="text/css"> 
     <style> 
     </style> 
     <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.min.js" type="text/javascript"></script> 
     <script type="text/javascript"> 
      var num2 = 3; 
      function getheight() { 
       console.log(num2); 
       var myWidth = 0, 
      myHeight = 0; 
       if (typeof (window.innerWidth) == 'number') { 
        //Non-IE 
        myWidth = window.innerWidth; 
        myHeight = window.innerHeight; 
       } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) { 
        //IE 6+ in 'standards compliant mode' 
        myWidth = document.documentElement.clientWidth; 
        myHeight = document.documentElement.clientHeight; 
       } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) { 
        //IE 4 compatible 
        myWidth = document.body.clientWidth; 
        myHeight = document.body.clientHeight; 
       } 
       var scrolledtonum = window.pageYOffset + myHeight + 2; 
       var heightofbody = document.body.offsetHeight; 
       if (scrolledtonum >= heightofbody) { 
        window.scroll(0, 0); 
       } 
      } 

      window.onscroll = getheight; 

      function pageScroll() { 
       num2 = 3; 
       clearTimeout(scrolldelay); 
       pageScroller(); 
      } 
      function unpageScroll() { num2 = 0; } 
      function pageScroller() { 
       window.scrollBy(0, num2); 
       scrolldelay = setTimeout('pageScroller()', num); 
      } 
      var num = 50; 
      window.onmouseout = pageScroll; 
      window.onmouseover = unpageScroll; 
     </script> 
    </head> 
    <body onLoad="pageScroller()"> 
    <p></p> 
    <br /> 
    <p></p> 
    <br /> 
    <div id="datacontainer" style="position:relative;width:100%;text-align:center;" onMouseover="unpageScroll" onMouseout="unpageScroll"> 

    <!-- ADD YOUR SCROLLER COMMENT INSIDE HERE---------------------> 
    <font face="Arial, Helvetica, sans-serif" size="1"> 
    <br> 
    <center> 
    <font size=2> 
<!-- CONTENT--> 
<!-- Closing tags ---> 

Répondre

0

Ce script simple semble fonctionner, vous pouvez peut-être en déduire comment modifier votre script: http://jsfiddle.net/xkuZF/1/.

function func() { 
    document.body.scrollTop++; 
} 

document.body.onmouseover = function() { 
    clearInterval(interval); 
}; 

document.body.onmouseout = function() { 
    interval = setInterval(func); 
}; 

var interval = setInterval(func); 
+0

J'ai une erreur quand je l'exécute: 'Uncaught TypeError: Impossible de définir la propriété 'onmouseout' de null' - Des idées? – Guy

+0

@Guy: Cela signifierait 'document.body' est' null' (très improbable - est-ce possible dans votre scénario?). Que faire si vous utilisez 'document.onmouseout'? – pimvdb

+0

Oui, je le crois. Qu'est-ce qui l'indiquerait? Notez que j'utilise un script dans un iFrame, cela ferait-il une différence sur le code que je devrais utiliser? Notez également que la page est asp. – Guy

Questions connexes