Blogger でコードをきれいにしようとしています。Google JS および CSS ファイルをテンプレートにリンクしました。問題は、ページの読み込み時にコードをきれいにしたいのでprettyPrint();
、テンプレートのページ読み込みイベントに追加することです。
<body onload="prettyPrint();">
このコードは実行されません。ただし、コンソールで prettyPrint() を手動で入力すると、コードが正しく整形されます。ブロガー テンプレートは JS 関数の手動呼び出しをブロックしますか?
編集コードの整形が必要なすべての投稿で関数を手動で呼び出すことで機能させます(以下を参照)。それでも、なぜテンプレートでそれができないのか知りたいです。
<pre class="prettyprint linenums lang-js">
function testCode(){
}
</pre>
// I have to do this in every post :-s
<script type="text/javascript">
prettyPrint();
</script>
EDIT 2 READMEprettyPrint()
には、ハンドラーとして直接使用するのではなく、代わりにクロージャーでラップする必要があると書かれています。そのため、README の例と同様に、このコードを追加しました<head>
が、役に立ちませんでした。
<script type='text/javascript'>
window.addEventListener('load', function (event) { prettyPrint() }, false);
</script>
また
<script type='text/javascript'>
document.addEventListener('DOMContentLoaded',function() {
prettyPrint();
});
</script>
編集 3私のテンプレート HTML は、上記で説明したように、prettify ライブラリが追加されたデフォルトの Dynamics View (クラシック) テンプレートです。
EDIT 4問題を示すリンクは次のとおりです: http://testprettyprint.blogspot.com/2013/02/blog-post.html -- コード ブロックは自動的に整形されませんが、Chrome のコンソールを開いて prettyPrint() と入力するとコードが正しく強調表示されます。
EDIT 5ブロガーの問題ではなく私の問題だと思う理由は、この男がまだ同じ手法を使用してコードを整形しているためです。
編集 6 Jeffery To が彼の回答で指摘したように、Dynamics View は AJAX を使用してブログ コンテンツを読み込むため、ドキュメントの読み込みに関する JS 呼び出しは、実際のコンテンツが読み込まれる前に実行されます。したがって、ドキュメントではなく、実際のブログ コンテンツに対して実行される JavaScript はすべて無効です。したがって、Dynamics View イベントにフックする方法が問題になると思いますがajax:complete
、そのようなものがあるとは思えません。返信してくれたみんなありがとう。これがバグとして数えられるかどうかはわかりませんが、blogger に問題を報告します。
結論Jeffery To の回答を読んでください。彼は、関数を呼び出すイベントを見つけました。