2017-01-12 1 views
0

J'ai trouvé un script (travail) qui autoscroll une page Web par un certain nombre de pixels:jQuery scrollTop() autoscroll par incrément fonctionne sur certains sites, mais pas sur d'autres. Pourquoi?

var y = $(window).scrollTop(); $("html, body").animate({ scrollTop: '+=291px'}, 300); 

Ce script fonctionne sur certains sites, mais pas d'autres. par exemple,

Le script fonctionne sur: Twitter.com, BBC.co.uk, Reddit.com

Le script ne travail sur: Facebook.com, Instagram.com, Pinterest.com. .. et montre l'un des messages d'erreur suivants:

VM104:1 Uncaught TypeError: Cannot read property 'scrollTop' of undefined at :1:18

(Pinterest & Instagram)

ou

Uncaught TypeError: $(...).scrollTop is not a function at :1:19

(Facebook)

Quelqu'un a-t-il une idée de ce qui se passe et comment nous pouvons le réparer? J'aimerais savoir.

À votre santé, StackOverflow!

+0

par 'un script', vous voulez dire, lorsque vous tapez dans la console Brower? – Kaddath

+0

Ces sites n'utilisent pas jQuery Je pensais que – Roljhon

+0

utiliser JS pur et pure animation avec JS, si vous voulez le faire fonctionner sur tous les sites, vous pouvez vérifier 'jQuery' si non défini ou non – Roljhon

Répondre

0

Plaine JS? document.getElementsByTagName("body")[0].scrollTop = 0

Ou avez-vous besoin d'animer?

EDIT ......

Avec animation

function scrollToTop(){ 

    var scrollHeight = document.getElementsByTagName("body")[0].scrollHeight; 

function scrollToTop(){ 
 
var scrollAtATime = 10; 
 
var scrollHeight = document.getElementsByTagName("body")[0].scrollHeight; 
 
var t = window.setInterval(function(){ 
 

 
    document.getElementsByTagName("body")[0].scrollTop = scrollHeight; 
 

 
    scrollHeight-=scrollAtATime; 
 
    
 
    //Add Easing 
 
    scrollAtATime = scrollHeight/100; 
 

 
    if(Math.ceil(scrollHeight) <= 1) window.clearInterval(t); 
 
    
 
    },1); 
 
    
 
}
div{ 
 
    border:1px solid red; 
 
    height:2000px; 
 
}
<div> 
 

 
</div> 
 
<button onclick="javascript:scrollToTop()">Click to scroll</button>

+0

OP veut une solution de contournement, vous aurait dû mettre ceci dans la section de commentaire – Roljhon

+1

Ceci est une solution de contournement .... certains sites n'utilisent pas jquery alors pourquoi ne pas plaine js? –

+0

cela fera-t-il fonctionner l'animation? base de son code? mettre le code d'animation ainsi – Roljhon