通过Ajax加载后找不到three.js

时间:2015-05-17 20:53:19

标签: javascript ajax meteor three.js

正在研究一个系统,用于在文档特定的脚本呈现后异步加载到Meteor模板中:

Template.postPage.onRendered(function(){

    var post = Template.currentData();

    if(post.libs) post.libs.forEach(function(e){
        console.log(e);
        $.getScript(e, function(data, text, code){
            console.log(text);
        }).done(threejs);

        function threejs(){
            var scene = new THREE.Scene();
        };

    });
});

此模式适用于Chartist,Chart.js和d3,但似乎不适用于three.js - 所有其他库都可在全局使用,但我似乎找不到{{由任何地方的three.js构造的对象。

我是否遗漏了一些明显的东西,或者我只是需要在匿名函数中包装three.js的内容来初始化?如果是这样,有人可以提供一个关于如何最好的例子/文件吗?

更新:我很难过。通过切换到CDN,THREE可以很好地加载。为了自给自足,我想从我自己的服务器上托管 - 如果有人可以推荐任何额外的测试,我很乐意听到它们。

1 个答案:

答案 0 :(得分:0)

最后为我自己的项目想出了这一点 - 这项工作的方法是编辑three.min.js源文件。

'use strict';开头删除/评论three.min.js可让其正确加载。

这似乎与meteor的以下特性/问题有关:https://github.com/meteor/meteor/issues/1380

CDN很可能没有缩小,并且不包含'use strict;'。为安全起见,'use strict;'应该在声明全局THREE命名空间后放置。