2015-08-14 100 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