Я пытаюсь очистить свой код в Blogger. Я связал файлы Google JS и CSS с моим шаблоном. Проблема в том, что я хочу, чтобы код был приглушен при загрузке страницы, поэтому я добавляю событие prettyPrint();
к загрузке страницы в шаблон.
<body onload="prettyPrint();">
Этот код не выполняется. Однако, если я наберу prettyPrint() вручную в консоли, мои коды будут исправлены правильно. Блокирует ли шаблон блога Blogger функции 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 README сказал, что я не должен использовать 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, как описано выше.
EDIT 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 View загружает содержимое блога с помощью AJAX, поэтому любой вызов JS с загрузкой документа будет выполнен до того, как будет загружен фактический контент. Поэтому любой JavaScript, выполняемый на самом блоге, а не на документе, является недопустимым. Поэтому я думаю, теперь вопрос заключается в том, как подключиться к событию Dynamics View ajax:complete
, если есть такая вещь, но я сомневаюсь, что есть. Спасибо всем, кто ответил. Я не уверен, что это можно считать ошибкой, но я напишу о проблеме с блоггером.
ЗАКЛЮЧЕНИЕ Пожалуйста, прочитайте Джеффри, чтобы ответить. Он обнаружил, что событие вызывает функцию.