2015-06-01 2 views
5

Ich habe eine Website auf Backbone. Wenn ich versuche, Disqus Code auszuführen i"Kann nicht lesen Eigenschaft 'appendChild' von null" mit Disqus auf Backbone Website

Uncaught TypeError: Cannot read property 'appendChild' of null

bekommen Wie kann ich es beheben? Warum passiert dies?

var disqus_shortname = 'mysite'; 

/* * * DON'T EDIT BELOW THIS LINE * * */ 
(function() { 
    var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; 
    dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; 
      (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 
})(); 

Konsole:

undefined 
embed.js:1 Unsafe attempt to redefine existing module: BASE 
embed.js:1 Unsafe attempt to redefine existing module: apps 
embed.js:1 Unsafe attempt to redefine existing module: get 
... 

embed.js:1 Unsafe attempt to redefine existing module: configAdapter 
embed.js:1 Unsafe attempt to redefine existing module: removeDisqusLink 
embed.js:1 Unsafe attempt to redefine existing module: loadEmbed 
embed.js:1 Unsafe attempt to redefine existing module: reset 
embed.js:1 Uncaught TypeError: Cannot read property 'appendChild' of null 
+0

scheint, dass Sie in Ihrem HTML weder ** head ** noch ** body ** -Tag definiert haben. – FatalError

Antwort

1

Es scheint Ihr Dokument fehlt sowohl eine head und body aus irgendeinem Grund.

Versuchen Sie folgendes:

(function() { 
    var dsq = document.createElement('script'); 
    var head = document.getElementsByTagName('head')[0]; 
    var body = document.getElementsByTagName('body')[0]; 

    dsq.type = 'text/javascript'; 
    dsq.async = true; 
    dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; 

    console.log('head', head); 
    console.log('body', body); 

    (head || body).appendChild(dsq); 
}()); 

dann in der Konsole aus.

+0

Es protokolliert Kopf und Körper – derzunov

+0

Aber immer noch meldet „Nicht abgefangene Typeerror: Eigenschaft nicht lesen‚appendChild‘von null“ – derzunov

+0

dieser Fehler von embed.js Screenshot - https://cloud.mail.ru/public/9iFg/8t8pomZXd – derzunov

15

Für diejenigen, die gerade dies im Jahr 2015 zu finden, zusätzlich zu der auftritt, wenn „Kopf“ oder „Körper“ fehlt, wird dieser Fehler auftreten, wenn Sie das folgende div in Ihrer Seite irgendwo nicht haben:

<div id="disqus_thread"></div> 

Setzen Sie das div, wo der disqus-Thread tatsächlich erscheinen soll.

// Only if disqus_thread id is defined load the embed script 
if (document.getElementById('disqus_thread')) { 
    var your_sub_domain = ''; // Here goes your subdomain 
    var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; 
    dsq.src = '//' + your_sub_domain + '.disqus.com/embed.js'; 
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 
} 
für den Hinweis

Thx @boutell und @June:

+5

Dies behebt ein ähnliches Problem für mich. Ich hatte den "appendChild of null" -Fehler und ich erkannte gerade, dass ich das disqus-Skript überallhin mit einschloss, aber nicht die Kommentare auf jeder Seite hatte. Jetzt habe ich den Code einfach in 'if ($ (" # disqus_thread "). Länge) {}} eingepackt und mir geht es gut. – June

1

Ich habe wie diese gelöst.

Verwandte Themen