prettyPrint () не вызывается при загрузке страницы
Я пытаюсь подтвердить свой код в 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>
РЕДАКТИРОВАТЬ 2 ПРОЧТИ МЕНЯ сказал, что я не должен использоватьprettyPrint()
непосредственно как обработчик, но вместо этого оберните его в замыкание. Поэтому я добавил этот код, похожий на пример в 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 - это просто шаблон Dynamics View (Classic) по умолчанию с библиотекой prettify, добавленной, как описано выше.
РЕДАКТИРОВАТЬ 4 Вот ссылка для демонстрации проблемы:http://testprettyprint.blogspot.com/2013/02/blog-post.html - блок кода автоматически не подвергается предварительному подтверждению, но если вы откроете консоль Chrome и введете prettyPrint (), коды будут выделены правильно.
РЕДАКТИРОВАТЬ 5 Причина, по которой я думаю, что это моя проблема, а не блоггер, потому что этот парень до сих пор имеет свой код, предварительно подтвержденный с использованием той же техники:http://errorbuster.blogspot.com/2012/07/prettify-syntax-highlighter-for-blogger.html
РЕДАКТИРОВАТЬ 6 Как указал Джеффри То в своем ответе, представление Dynamics загружает содержимое блога с помощью AJAX, поэтому любой вызов JS при загрузке документа будет выполняться ДО загрузки фактического содержимого. Поэтому любой JavaScript, выполняемый с фактическим содержимым блога, а не с документом, является недействительным. Итак, я думаю, что вопрос сейчас заключается в том, как подключиться к Dynamics Viewajax:complete
событие, если есть такая вещь, но я сомневаюсь, что есть. Спасибо всем, кто ответил. Я не уверен, что это можно считать ошибкой, но я сообщу о проблеме блоггеру.
ЗАКЛЮЧЕНИЕ Пожалуйста, прочитайте ответ Джеффри То. Он нашел событие для вызова функции.