有沒有人在他們的Jive主題中實現JSZip成功?我在實例化JSZip對象時遇到了問題。這裏是設置: 我有一個Jive主題,在腳本文件夾中有一些自定義JS文件。該JS文件通過在javascript.soy模板類似這樣的腳本標籤包括:Jive中的JSZip主題
/*javascript.soy*/ <script src="{themeUrl('/scripts/carousel.js')}"></script> <script src="{themeUrl('/scripts/jszip.min.js')}"></script> <script src="{themeUrl('/scripts/our-theme.js')}"></script>
我們-theme.js嘗試實例JSZip的這樣一個新的實例:
var zip = new JSZip();
瀏覽器拋出「ReferenceError:JSZip未定義」錯誤(在Firebug或Chrome Developer Console中可見)。這很奇怪,因爲我可以通過Firebug查看腳本文件,或者通過單擊「View Page Source」查看腳本文件。我可以驗證jszip.min.js具有JSZip定義的正確腳本標記是否已生成並可訪問。
我能夠調用其他外部JS文件中的函數,所以我能想到的唯一的事情是,我不當這個實例化對象。每JSZip文檔:
對於瀏覽器,有兩個有趣的文件:DIST/jszip.js和DIST/jszip.min.js(包括只有一個)。 如果您使用AMD加載程序(例如RequireJS),JSZip將自行註冊:您只需將js文件放在正確的位置,或配置加載程序(請參閱RequireJS)。 如果沒有任何加載器,JSZip將在全局範圍內聲明一個名爲JSZip的變量。
我沒有使用RequireJS。所以JSZip應該被註冊爲一個全局變量,但是我無法訪問它並在窗口集合中查看它。
我通過社區看了,但不可能看到其他人所使用JSZip與牛仔但我想它不會傷害嘗試:)
uhoh。看起來像是一個AMD環境。這是我的輸出: 看起來像AMD對象{} 看起來像假的NodeJS 如何暴露在這種情況下,JSZip變量? –
如果您在js控制檯中發現任何錯誤,您應該首先檢查JSZip是否在AMD env /中正確註冊。當我嘗試用Requirejs重現你的環境時,我得到一個「錯誤:不匹配的匿名定義()模塊」(這是預期的,UMD定義期望調用者命名該模塊)。我會說你會有相同的。在這種情況下,您需要使用AMD加載器加載JSZip:'require([「{themeUrl('/ scripts/jszip.min.js')}」],function(JSZip){console.log(「JSZip」, JSZip);});'(或者更好的方法是,使用url配置AMD加載器,只需要「jszip」)。 –