0

XML3D 不能与require.js一起使用,即使确保首先加载它并使用“ shim ”配置选项(对于非 AMD 模块)。

我有以下代码:

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>
4

1 回答 1

1

没错,这是对 XML3D 初始化方式的简单疏忽。DOMContentLoaded我们在没有检查第一个的情况下注册了一个监听器document.readyState,所以逻辑上,当 require.js 加载 XML3D 时,DOMContentLoaded事件已经被分派了。

该修复程序将成为即将发布的 4.9.4 版本的一部分,并且位于hotfix-4.9.4 分支上。

同时没有简单的解决方法(除非您想在通过 require.js 加载 XML3D 后手动触发 DOMContentLoaded 事件,这非常混乱),但您可以构建修补程序分支或将修复程序拉入您的 xml3d 副本.js 因为它只有几行。

于 2015-08-17T08:12:59.520 回答