2017-06-15 32 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,所以這很好。我非常感謝你的幫助。 –