2016-04-01 4 views
1

Ich möchte Laden von externen Ressourcen verschieben, bis meine Web-Seite geladen ist, so habe ich versucht, die guten alten ‚verschieben‘ OperatorWie verhindere ich, dass eine externe Ressource geladen wird, während der Fehler "Fehler beim Ausführen von 'Schreiben' bei 'Dokument'" verhindert wird?

<script src="//assets.adobedtm.com/aaabbbcccddd/satelliteLib-680156eb19277c7ad2206ff3fac1c250f6d6214c.js" defer></script> 

Der Grund, warum ich dies tun, ist, weil ich meine will nicht Rendering von Seite zu langsam oder blockiert, wenn die externe Ressource nicht vorhanden ist oder Probleme beim Kontakt mit dieser Website auftreten. Dies ist eine externe Datei von Adobe, die ich nicht kontrolliere. Leider auf Chrome diese Anweisung Zugabe gibt die folgenden Fehler in der Konsole ...

Failed to execute 'write' on 'Document': It isn't possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened. 

Kennt jemand eine Möglichkeit, dass ich diese Datei, ohne blockieren Wiedergabe von meiner Seite am Ende laden kann, wenn die Ressource nicht geladen UND den obigen Fehler verhindern?

+0

Nachdem eine Seite geladen wurde, ersetzt 'document.write (whatever)' _ den gesamten Inhalt eines Dokuments, anstatt es anzuhängen. Es scheint, Chrome-Flags versuchen, dies von einem verzögerten Skript als Fehler zu tun, und das Adobe-Skript verwendet 'document.write' Würde das Skript in eine iframe-Hilfe in jedem Fall laden? – traktor53

Antwort

1

Ich denke, ich habe eine Lösung gefunden: Postscribe. Es scheint den Trick zu tun:

<body> 
    <div id="blah"><!-- document.write() content gets inserted here --></div> 
    <script> 
    document.addEventListener('DOMContentLoaded', function() { 
     postscribe('#blah', '<script src="http://url/to/script.js"><\/script>'); 
    }); 
    </script> 
</body> 

Kein Chromfehler mehr!


bearbeiten: Ich habe meine ursprüngliche, nicht arbeit Antwort Verwirrung zu vermeiden (die Code aus diesem huge script loading guide verwendet) entfernt.

+0

Ja, ich habe bestätigt, dass ich immer noch denselben Fehler erhalte. Also, ich ignoriere deine Antwort vollständig? – Dave

+0

Ich habe meine Antwort noch einmal aktualisiert - hoffentlich funktioniert das für Sie. – eppsilon

+0

Ich habe Ihre Antwort ausgeschnitten und eingefügt, nur den Teil "src" ersetzt und habe den folgenden Fehler erhalten: "postscribe.js: 689 Uncaught TypeError: Eigenschaft 'postscribe' von null kann nicht gesetzt werden." Soll ich "#blah" durch etwas ersetzen? – Dave