Ten problem pojawia się tylko w Firefoksie 14.0.1 (cóż, nie mogłem go odtworzyć w żadnej innej przeglądarce). Jeśli umieściłeś kod komentarzy Disqus wewnątrz elementu, który jest ukryty, a poczekaj, aż wszystko jest w pełni załadowane , a następnie wyświetl elementy za pomocą JavaScript, pojawi się komentarz, ani komentarze pojawią się. Jeśli jednak zmienisz rozmiar okna, natychmiast pojawi się. Praca w najnowszej wersji Google Chrome i Safari.

Co to powoduje i jak go naprawić?

Przykładowy kod do reprodukcji:

<div id="test" style="display:none;">
<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'onlinefunctions'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
<a href="#" onclick="document.getElementById('test').style.display = 'block'">show</a>

Mógłbym opublikować link do na żywo, ale nie jestem pewien co do polityki publikowania łączy tutaj na przepełnienia stosu.

2
Bazze 9 sierpień 2012, 17:25

4 odpowiedzi

Najlepsza odpowiedź

Wydaje się to być stosunkowo częstym problemem z disqus inicjującym w ukrytym div. Jeśli spojrzysz na dom Iframe, który kod JavaScript Disqusa wciągnie do Twojego DIV ma wysokość 0px, podczas gdy w chromie i innych przeglądarkach ma wysokość 327px, gdy nie ma komentarzy do wyświetlenia.

Bit hacky obejścia, który działa dla mnie, jest użycie poprawki CSS Min-Height na bloku Disqus Iframe, albo w CSS lub wewnątrz jQuery Document.Ready Block:

<div id="my-disqus-block">
  <script type="text/javascript">
    // Normal Disqus embed code       
    var disqus_shortname = 'my_disqus_username'; // required: replace example with your forum shortname

    (function() {
      var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
      dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
      (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();

    // Fix for Disqus box height in hidden Firefox
    $(document).ready(function() {
      $('#my-disqus-block iframe').css({
        'height': '327px',
        'height': 'auto !important',
        'min-height': '327px'
      });
    });
  </script>
  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
  <a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
3
toomanyredirects 14 luty 2013, 15:36

To nie naprawia dla mnie problemu. Znalazłem inny sposób, aby naprawić go, wymieszając rozwiązanie Toominredirects za pomocą funkcji Callback Display Disqus API (http://www.electrictoolbox.com/running-javascript-Funkcja-Fter-disqus-tloaded/)

Oto kod, którego używam (należy zadeklarować w zmiennych konfiguracji Disqus):

disqus_config = function() {
    this.callbacks.onReady = [function() {
        $('#disqus_thread iframe').css({
            'height': '327px',
            'height': 'auto !important',
            'min-height': '327px'
        });
    }];
};
1
Dharman 17 październik 2020, 12:31

Mam podobny problem z Disqus osadzony w zakładce JQUERY-UI. Jestem w stanie wyprodukować błąd w FF i IE9. Chrome działa dobrze.

Skontaktowałem się z Disqusem, ale nie otrzymałem odpowiedzi.

0
sr83 11 wrzesień 2012, 21:35

Mam dokładnie taki sam problem. Mój komentarz Disqus Box jest ukryty i na {x0}} przycisku powinien być wyświetlany. Działa dobrze we wszystkim, ale Firefox. Cholera!

0
Artur Udod 15 październik 2012, 06:40