How to run javascript after loading Disqus

I am trying to work with the Disqus api, and I need to run some javascript code that modifies the Disqus comment stream.

How to run javascript code after loading Disqus stream?

+4
source share
5 answers

I had a similar problem. The only working solution I could come up with was to run setInterval() to check the height of the Disqus container container.

Example:

 var editable = true; // set a flag setInterval(function() { // Initially Disqus renders this div with the height of 0px prior to the comments being loaded. So run a check to see if the comments have been loaded yet. var disqusHeight = $('#dsq-2').height(); if ( disqusHeight > 0 ) { if (editable) { // To make sure that the changes you want to make only happen once check to see if the flag has been changed, if not run the changes and update the flag. editable = false; // Your code here... } } }, 100); 
+5
source

Here, the Brandon Morse code for the new version of Disqus is changed and the script stops when loading Disqus comments.

 var interval = setInterval(function() { var $ = jQuery; var disqusHeight = $('#disqus_thread').height(); if ( disqusHeight > 52 ) { // height 52px is header of Disqus, more than 52px means that disqus load comments // Your code clearInterval(interval); // after loaded comment we stop this script } }, 100); 
0
source

Use flag to avoid loop:

 evento.add(window, "load", function () { var w = window, d = document, a = d.getElementById("disqus_thread") || "", disqus_shortname = a ? (a.dataset.shortname || "") : "", embed_js_src = ("https:" == w.location.protocol ? "https" : "http") + "://" + disqus_shortname + ".disqus.com/embed.js", g = ".grid", h = ".grid-item", k = ".grid-sizer", grid = d.querySelector(g) || ""; function build_layout() { if (grid) { if (w.Packery) { var pckry = new Packery(grid, { itemSelector : h, gutter : 0 }); } else if (w.Masonry) { var msnry = new Masonry(grid, { itemSelector : h, columnWidth : k }); } } } build_layout(); if (a && disqus_shortname) { w.loadJS && loadJS(embed_js_src, function () { if (grid) { var f = !1; setInterval(function () { var disqus_thread_height = a.clientHeight || a.offsetHeight || ""; if (108 < disqus_thread_height && !1 === f) { /* alert(disqus_thread_height); */ build_layout(); f = !0; } }, 100); } }); } }); 
0
source

Try the following:

 function disqus_config() { this.callbacks.onReady.push(function () { // your code }); } 
0
source
  `<script> var disqus_config = function () { this.callbacks.onReady = [function(data) { //your code here }]; this.callbacks.afterRender= [function(data) { //your code here }]; this.callbacks.beforeComment= [function(data) { //your code here }]; this.callbacks.onInit= [function(data) { //your code here }]; this.callbacks.onNewComment= [function(data) { //your code here }]; this.callbacks.onPaginate= [function(data) { //your code here }]; this.callbacks.preData= [function(data) { //your code here }]; this.callbacks.preInit= [function(data) { //your code here }]; this.callbacks.preReset= [function(data) { //your code here }]; }; </script>` 
0
source

Source: https://habr.com/ru/post/1485226/


All Articles