2017-06-15 79 views
2

我想在我的Squarespace网站上使用Scratchblocks(一种用于从文本列表中呈现视觉临时代码块的工具,on GitHub)。我遇到的问题是scratchblocks永远不会在第一次加载时呈现 - 但仅在刷新后才会呈现。javascript scratchblocks广场空间

这是在头(在标题为特定的博客设置):

<script src="https://scratchblocks.github.io/js/scratchblocks-v3.1-min.js""></script> 

那么我想我需要调用页面结束这一功能 - 我把它放在页脚:

scratchblocks.renderMatching('pre.blocks'); 

注意:当我查看源代码时,我在页面尾部看到了两次这样的JavaScript。不知道那里发生了什么。

下面是它在我的网站上的一个例子,它只在刷新后呈现scratchblocks。 [最新消息 - 按照下面提供的修补程序,这使得现在第一次,据我可以告诉每次] [http://www.glennbroadway.com/coding-zone/2017/4/6/simple-collisions-in-scratch]2

这里是别人的例子使用它,它工作正常。我检查了来源,我无法弄清楚他们是如何做的。 https://codeclubprojects.org/en-GB/scratch/memory/

我也尝试了所有不同的方法在其他地方列出的stackoverflow获取JavaScript加载后,只有在HTML完成。我无法让他们工作 - 但我认为这个问题与Squarespace有关,我只是没有解决问题的知识。

任何帮助将不胜感激。

+0

该codeclub项目链接到使用基于闪存的Scratch 2.0,而不是您感兴趣的Scratch-Blocks(未来Scratch 3.0)库看起来像它。 – Anm

+0

感谢您更新我的问题Anm。我不确定你的意见是什么意思。 Scratchblocks指的是在页面主体中呈现代码片段的工具 - 而不是运行嵌入式游戏的Scratch版本(这是使用Flash的Scratch 2)。 Scratch 3还在Beta中不是? –

+0

Scratch 2.0基于Flash,这就是我在codeclub项目上看到的。 Scratch-Blocks是即将推出的Scratch 3.0的代码渲染器(是的,仍在开发中)基于Blockly并且不使用Flash。 Scratch-Blocks不是你今天去抓Scratch时看到的。 (来源:我是一名与Scratch团队合作的Blockly开发人员。) – Anm

回答

1

在Squarespace,当你的自定义JavaScript页面刷新后才能正常运行,它最有可能与Squarespace's AJAX loading做:

偶尔,阿贾克斯可以嵌入自定义代码或锚 链接冲突。 Ajax也会干扰网站分析,仅在第一页上记录点击量。

您或许可以为您的模板禁用AJAX。或者,看到这里列出的其他方法:https://stackoverflow.com/a/42604055/5338581包括:

window.addEventListener("mercury:load", function(){ 
    // do stuff 
}); 

此外,我一般会建议将自定义代码中的“页脚”代码注入区域,除非你有特别的理由不这样做。

+0

谢谢,关闭AJAX加载确实有效。我在页脚中已经有了最后一段Javascript,所以这很好。我非常感谢你的帮助。 –