2015-08-14 89 views
0

XML3D不require.js工作,即使一个确保其加载第一,用“shim”配置选项(非AMD模块)。与require.js加载XML3D

我下面的代码:

的index.html包含XML3D标签

<xml3d> 
...some stuff.. 
</xml3> 
<script data-main="scripts/main.js" src="scripts/require.js"></script> 

main.js

requirejs.config({ 
    paths: { 
    xml3d: *url* 
    }, 
    shim: { 
    'xml3d': { exports: 'XML3D' } 
    } 
}); 

requirejs(['xml3d'], function (XML3D) { console.log(XML3D) // that works }); 

中的console.log代码显示了正确的信息,但是XML3D画布没有正确打开(其缩小到很小的区域并且没有渲染对象)。

而且,是把

<script src="xml3D url"></script> 

而是采用require.js工程确定(一切都被渲染。) 所以这个代码如下作品( 的index.html组成的无main.js) 。

<xml3d> 
...some stuff.. 
</xml3> 
<script src="url of XML3D"></script> 
+0

我想你问,因为你仍然希望这样的工作。如果解决问题的问题可以用两行来表示([mcve]),那么结果可能就是解决方案。 – rene

+0

我们作为社区和@ gunr2171认为,图书馆是不开源的,由公司为此决定。这个例子将起作用,我收回了我的近距离投票。 – rene

+0

好吧,XML3D是一个开源项目:http://xml3d.org,https://github.com/xml3d/xml3d.js/ – Pietrko

回答

1

你说得对,这是XML3D初始化的一种简单的监督。我们被时间require.js注册侦听DOMContentLoaded不首先检查document.readyState,因此在逻辑上就装XML3D的DOMContentLoaded事件已经出动。

的修复将是即将到来的4.9.4版本的一部分,并坐在hotfix-4.9.4 branch

在平均时间内没有简单的解决方法(除非您想在XML3D通过require.js加载后非常麻烦地手动触发DOMContentLoaded事件),但您可以构建修补程序分支或将修补程序你的xml3d.js的副本,因为它只有几行。

+0

十分感谢!你拯救了我的生命。 – Pietrko