2

我想在我的 Squarespace 网站上使用 Scratchblocks(一种用于从GitHub上的文本列表中呈现视觉 Scratch 代码块的工具)。我遇到的问题是暂存块永远不会在第一次加载时呈现 - 但只有在刷新后才会呈现。

这是在标题中(在该特定博客的标题中设置):

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

然后我想我需要在页面末尾调用这个函数 - 我把它放在页脚中:

scratchblocks.renderMatching('pre.blocks');

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

这是我网站上的一个示例,它仅在刷新后才呈现暂存块。[更新 - 在下面提供的修复之后,据我所知,这现在是第一次渲染。] [ http://www.glennbroadway.com/coding-zone/2017/4/6/simple-collisions-从头开始] 2

这是其他人使用它并且工作正常的示例。我已经检查了来源,但我无法弄清楚他们是如何做到的。 https://codeclubprojects.org/en-GB/scratch/memory/

我还尝试了 stackoverflow 上其他地方列出的所有不同方法,以便仅在 HTML 完成后加载 javascript。我无法让它们中的任何一个工作 - 但我认为问题与 Squarespace 有关,我只是不知道如何解决问题。

任何帮助将不胜感激。

4

1 回答 1

1

在 Squarespace 中,当您的自定义 Javascript 仅在页面刷新后才能工作时,它很可能与Squarespace 的 AJAX 加载有关:

有时,Ajax 可能会与嵌入的自定义代码或锚链接发生冲突。Ajax 还可以干扰站点分析,仅记录第一页上的点击。

您可以为您的模板禁用 AJAX。或者,请参阅此处概述的其他方法:https ://stackoverflow.com/a/42604055/5338581,包括:

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

此外,我通常建议将自定义代码放在“页脚”代码注入区域,除非您有特定的理由不这样做。

于 2017-06-15T12:17:27.883 回答