2013-02-20 7 views
5

Ich sehe einige jekyll powered Blogs verwenden disqus für Kommentare und wo der Kommentarbereich nicht geladen wird, bis Sie zum Ende der Seite scrollen.Wie wird disqus geladen, wenn zum unteren Seitenrand geblättert wird?

Wie kann ich das angehen?

Ich habe so etwas wie dies versucht:

<div id="disqus_thread"></div> 
<div id="disqus_loader" style="text-align: center"> 
<button onclick="load_disqus()">Load Disqus Comments</button> 
<script> 
function load_disqus() 
{ 
    var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; 
    dsq.src = "http://[YOUR-DISQUS-SHORTNAME].disqus.com/embed.js"; 
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 
    var ldr = document.getElementById('disqus_loader'); 
    ldr.parentNode.removeChild(ldr); 
} 
</script> 
</div> 

Ein Klick, um die Disqus zu laden. Aber ich frage mich, wie kann ich es laden, wenn ich bis zum Ende der Seite blättern.

+0

Was haben Sie versucht? Haben Sie einen funktionierenden Kommentarbereich, für den Sie Code anzeigen können? – Wez

+0

Alles, was ich habe, ist der universelle Code von disqus. Ich habe so etwas wie einen Klickknopf ausprobiert, um die Disqus zu laden. –

Antwort

6

Mit Hilfe von Javascript: How to detect if browser window is scrolled to bottom?

var disqus_loaded = false; 

function load_disqus() 
{ 
    disqus_loaded = true; 
    var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; 
    dsq.src = "http://[YOUR-DISQUS-SHORTNAME].disqus.com/embed.js"; 
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 
    var ldr = document.getElementById('disqus_loader'); 
    ldr.parentNode.removeChild(ldr); 

} 

window.onscroll = function(e) { 
    if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) { 
     //hit bottom of page 
     if (disqus_loaded==false){ load_disqus() }; 
    } 
}; 
+0

Es gibt ein Problem mit dieser Methode, es gibt keinen Haltepunkt. Disqus wird immer wieder geladen, wenn ich zum Ende der Seite scrolle. –

+0

Eine schnelle Änderung hinzugefügt, um dies zu verhindern. – bwest

+0

Immer noch das gleiche Problem, nicht verhindern, dass load_disqus weiterhin geladen wird. –

2

Für ein wenig mehr Flexibilität (erfordert jQuery), möchten Sie vielleicht einen Wegpunkt in Erwägung zu ziehen, anstatt den Benutzer zu erfordern den ganzen Weg nach unten zu scrollen.

$('.end-of-jekyll-post').waypoint(function(direction) { 
    load_disqus(); 
}); 
+0

+1 Super Plugin! –