Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jive主题中的JSZip_Javascript_Jquery_Jszip_Soy Templates - Fatal编程技术网

Javascript Jive主题中的JSZip

Javascript Jive主题中的JSZip,javascript,jquery,jszip,soy-templates,Javascript,Jquery,Jszip,Soy Templates,有人在他们的Jive主题中成功地实现了吗?我在实例化JSZip对象时遇到问题。以下是设置: 我有一个Jive主题,在脚本文件夹中有一些自定义JS文件。JS文件通过javascript.soy模板中的脚本标记包含,如下所示: /*javascript.soy*/ 我们的-theme.js尝试实例化JSZip的一个新实例,如下所示: var-zip=newjszip() 浏览器抛出一个错误(在firebug或Chrome开发者控制台中可见)“ReferenceError:JSZip未定义”。这很奇

有人在他们的Jive主题中成功地实现了吗?我在实例化JSZip对象时遇到问题。以下是设置: 我有一个Jive主题,在脚本文件夹中有一些自定义JS文件。JS文件通过javascript.soy模板中的脚本标记包含,如下所示:

/*javascript.soy*/

我们的-theme.js尝试实例化JSZip的一个新实例,如下所示:

var-zip=newjszip()

浏览器抛出一个错误(在firebug或Chrome开发者控制台中可见)“ReferenceError:JSZip未定义”。这很奇怪,因为我可以通过Firebug查看脚本文件,或者通过单击“查看页面源代码”,我可以验证具有jszip定义的jszip.min.js的正确脚本标记是否已生成并可访问

我能够调用其他外部JS文件中的函数,所以我唯一能想到的就是我错误地实例化了这个对象。根据JSZip文档:

对于浏览器,有两个有趣的文件:dist/jszip.js和dist/jszip.min.js(只包括一个)。 如果您使用AMD加载程序(例如RequireJS),JSZip将自动注册:您只需将js文件放在正确的位置,或者配置加载程序(请参阅此处了解RequireJS)。 如果没有任何加载程序,JSZip将在全局范围内声明一个名为JSZip的变量

我没有使用RequireJS。所以JSZip应该注册为一个全局变量,但我无法访问它并在窗口集合中看到它


我查看了整个社区,但没有看到任何其他人将JSZip与Jive一起使用,但我认为尝试一下也无妨:)

JSZip使用browserify生成定义为的
dist/
文件。如果UMD代码检测到AMD环境(存在AMD
define
)或nodejs环境(存在模块
module
和导出
exports
),则不会公开全局
JSZip
变量

在浏览器中,您应该检查是否存在这种情况(这些检查来自生成的
jszip.js
文件):


哦。看起来有一个AMD环境。这是我的输出:看起来像AMD对象{}看起来像nodejs false在这种情况下如何公开JSZip变量?您应该首先检查JSZip是否在AMD env中正确注册/如果您在js控制台中看到任何错误。当我尝试用Requirejs重现您的环境时,我得到一个“错误:不匹配的匿名define()模块”(这是预期的,UMD定义期望调用方命名模块)。我想你也会有同样的。在这种情况下,您需要使用AMD加载程序加载JSZip:
require([“{themeUrl('/scripts/JSZip.min.js')}”],函数(JSZip){console.log(“JSZip”,JSZip);})(或者更好,使用url配置AMD加载程序,并且只请求“jszip”)。
console.log("looks like AMD", "function" == typeof define && define.amd);
console.log("looks like nodejs", "object" == typeof exports && "undefined" != typeof module);