我正在尝试美化我在 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 README说我不应该使用 prettyPrint()直接作为处理程序,但将其包装在闭包中。所以我在我的 <head> 中添加了这段代码,类似于 README 中的示例。但无济于事。
<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 正如 Jeffery To 在他的回答中指出的那样,动态 View 使用 AJAX 加载博客内容,因此任何对文档加载的 JS 调用都将在加载实际内容之前执行。因此,对实际博客内容而非文档执行的任何 JavaScript 都是无效的。所以我想现在的问题是如何连接到 Dynamics View ajax:complete事件,如果有这样的事情,但我怀疑是否存在。感谢所有回复的人。我不确定这是否可以算作错误,但我会向博主提交问题。
结论 请阅读 Jeffery To 的回答。他找到了调用函数的事件。
最佳答案
我相信您的测试页面使用的是 Blogger 的“Ajax 模板”(不确定官方名称是什么),而您发布的另一个链接使用的是经典模板。
如果您重新加载测试页,您将首先在页面中间看到 Blogger Logo ,然后您的内容会出现。如果您查看测试页源代码,您会看到很多代码,但看不到您的内容。我相信对于布局模板,Blogger 的代码首先运行,然后它使用 Ajax 获取您的内容。在文档就绪 (DOMContentLoaded) 或窗口加载时运行的任何 JavaScript 代码都将在您的内容加载到页面之前运行。
我相信如果你add a HTML/Javascript widget到页面(在您的内容 block 之后),然后包含对 prettyPrint() 的调用在该小部件中,每次显示帖子时都应调用它。
更新:此模板的正式名称是“动态 View ”,动态 View 似乎不支持 HTML/JavaScript 小部件。我找不到任何关于允许您连接到 Blogger 的 JavaScript 的 API 的提及,所以我相信答案(至少现在)是不可能添加模板级代码来执行您想要的操作。最实用的方法是包含一个 script用 prettyPrint() 标记在每个帖子中:-(
更新 2: 我已经通过 Blogger 的代码进行了跟踪,并且我认为我已经找到了一个合适的(并且可绑定(bind)的)事件。尝试在动态 View 代码之后(在 head 元素中,在 <script src='//www.blogblog.com/dynamicviews/...'></script> 标签之后)包括这个:
<script>
$(window.blogger.ui()).on('viewitem', function (event, post, element) {
prettyPrint();
});
</script>
viewitem每次用户查看项目时都会触发事件(在页面的生命周期中可能会发生多次)。 element参数是项目容器元素的 jQuery 对象,所以如果你想保存 prettyPrint()一点时间你可以做到这一点:
<script>
$(window.blogger.ui()).on('viewitem', function (event, post, element) {
element.each(function () {
// first argument is a callback function
// second argument is a root element or document to check
prettyPrint(null, this);
});
});
</script>
关于javascript - prettyPrint() 不会在页面加载时被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14540009/
设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL
我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我需要一些关于TDD概念的帮助。假设我有以下代码defexecute(command)casecommandwhen"c"create_new_characterwhen"i"display_inventoryendenddefcreate_new_character#dostufftocreatenewcharacterenddefdisplay_inventory#dostufftodisplayinventoryend现在我不确定要为什么编写单元测试。如果我为execute方法编写单元测试,那不是几乎涵盖了我对create_new_character和display_invent
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt