prettyPrint () wird beim Laden der Seite nicht aufgerufen
Ich versuche, meinen Code in Blogger zu verschönern. Ich habe Google JS- und CSS-Dateien mit meiner Vorlage verknüpft. Das Problem ist, dass ich möchte, dass der Code beim Laden der Seite angepasst wird, also füge ich hinzuprettyPrint();
zum Laden eines Ereignisses in der Vorlage.
<body onload="prettyPrint();">
Dieser Code wird nicht ausgeführt. Wenn ich jedoch prettyPrint () manuell in die Konsole eingebe, werden meine Codes korrekt eingegeben. Blockiert die Blogger-Vorlage das manuelle Aufrufen von JS-Funktionen?
BEARBEITEN Ich rufe die Funktion für jeden Beitrag, für den ich Code-Prettifying benötige, manuell auf (siehe unten). Trotzdem möchte ich wissen, warum ich das mit der Vorlage nicht machen kann.
<pre class="prettyprint linenums lang-js">
function testCode(){
}
</pre>
// I have to do this in every post :-s
<script type="text/javascript">
prettyPrint();
</script>
BEARBEITEN 2 DasREADME sagte, dass ich nicht verwenden sollteprettyPrint()
direkt als Handler, sondern wickeln Sie es in einen Verschluss statt. Deshalb habe ich diesen Code, ähnlich dem Beispiel in der README, in meine<head>
aber ohne Erfolg.
<script type='text/javascript'>
window.addEventListener('load', function (event) { prettyPrint() }, false);
</script>
ODER
<script type='text/javascript'>
document.addEventListener('DOMContentLoaded',function() {
prettyPrint();
});
</script>
EDIT 3 Meine HTML-Vorlage ist nur die Standardvorlage für Dynamics View (Classic). Die Prettify-Bibliothek wurde wie oben erläutert hinzugefügt.
EDIT 4 Hier ist ein Link, um das Problem zu demonstrieren:http://testprettyprint.blogspot.com/2013/02/blog-post.html - Der Codeblock wird nicht automatisch angepasst. Wenn Sie jedoch die Chrome-Konsole öffnen und prettyPrint () eingeben, werden die Codes korrekt hervorgehoben.
BEARBEITEN 5 Der Grund, warum ich denke, dass es mein Problem ist, nicht das eines Bloggers, weil dieser Typ seinen Code immer noch mit der gleichen Technik verschönert hat:http://errorbuster.blogspot.com/2012/07/prettify-syntax-highlighter-for-blogger.html
EDIT 6 Wie Jeffery To in seiner Antwort darauf hingewiesen hat, lädt die Dynamics-Ansicht Blog-Inhalte mit AJAX, sodass jeder JS-Aufruf beim Laden von Dokumenten ausgeführt wird, BEVOR der tatsächliche Inhalt geladen wird. Daher ist jegliches JavaScript, das für den tatsächlichen Blog-Inhalt ausgeführt wird, nicht für das Dokument, ungültig. Ich schätze, die Frage ist jetzt, wie man sich in Dynamics View einfügtajax:complete
Event, wenn es so etwas gibt, aber ich bezweifle, dass es das gibt. Vielen Dank an alle, die geantwortet haben. Ich bin nicht sicher, ob dies als Fehler gewertet werden kann, aber ich werde ein Problem mit Blogger einreichen.
FAZIT Bitte lies Jeffery To's Antwort. Er fand das Ereignis, um die Funktion aufzurufen.