【发布时间】:2015-10-12 17:00:57
【问题描述】:
我一直在为 QuickBase 编写一个自定义脚本,它需要一些日期操作。我决定使用moments.js,因为我在quickbase 中使用它,所以我使用$.getscript 动态加载moments.js。我之前使用其他插件(jquery.md5.min.js)完成了这个过程,并且可以正常工作。
问题是,即使 moment.js 被正确读取,当我尝试使用它时(例如,查看我为调试添加的 console.log(),我收到一条错误消息,告诉我“moment is not定义”。
我知道 moment.js 正在被读取,因为我已经在加载后将它转储到控制台中,并且我仅在通过异步方法加载它之后才尝试使用它的功能。我还玩了一些简单的 jsfiddles,以确保我正确调用它。我还检查了几次网址,它是正确的。我的其余代码也是正确的(如果我用 moment() 注释掉这些行,它会按预期工作)。
$.getScript(domain + dbid_app + urlMoments)
.done(function(script, textStatus) {
rightNow = moment();
dfd.resolve(); // Resolve when the script is finished loading.
console.log("moments.js has finished loading.\n\n" + textStatus);
console.log(rightNow);
})
.fail(function( jqxhr, settings, exception ) {
console.log( "Triggered ajaxError handler." );
});
如何调用 moment() 函数?运行小提琴时,在查看了许多在线示例之后,它很简单:var myTime = moment();,但这在我的脚本中不起作用。有没有可能,即使在使用 $.getscript() 加载了 moment.js 之后,它也没有被执行?从moments.js的源码看,工厂函数应该是自动调用的吧?
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
global.moment = factory()
}
最后一件事:url 指向我用moments.js 创建的QuickBase 代码页。这也是我使用 jquery.md5.js 没有任何问题的方式。
【问题讨论】:
标签: momentjs getscript quickbase