我正在尝试在 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 只是默认的动态视图(经典)模板,上面添加了美化库。
编辑 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正如 Jeffery To 在他的回答中指出的那样,动态视图使用 AJAX 加载博客内容,因此任何 JS 对文档加载的调用都将在加载实际内容之前执行。因此,对实际博客内容而非文档执行的任何 JavaScript 都是无效的。所以我想现在的问题是如何挂钩 Dynamics Viewajax:complete
事件,如果有这样的事情,但我怀疑有。感谢所有回复的人。我不确定这是否可以算作一个错误,但我会向博主提出问题。
结论请阅读 Jeffery To 的回答。他找到了调用函数的事件。