私は TogetherJS ( http://togetherjs.com ) を使用しており、DOM の準備ができたら動的に呼び出したいと考えています。head 内の script タグを介して呼び出すと、正しく動作します。同じスクリプトを動的に呼び出すと、問題が発生します。
function loadjsfile(filename, filetype){
if (filetype=="js"){ //if filename is a external JavaScript file
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)
}
if (typeof fileref!="undefined")
document.getElementsByTagName("head")[0].appendChild(fileref)
}
loadjsfile("https://togetherjs.com/togetherjs-min.js", "js")
これらの関数は機能しません:
TogetherJS.hub.on('init', function (msg) {
console.log("init");
});
TogetherJS.on("ready", function () {
console.log("ready");
});
「TogetherJS が定義されていません」というメッセージが表示されます。
私に何ができる?
編集:実際には、ガレリア( http://galleria.io )の準備ができた後にロードしたいので、次のように呼び出しています:
Galleria.ready(function(){
loadjsfile("https://togetherjs.com/togetherjs-min.js", "js");
})
Edit2 : docs togetherjs.com/docs/#extending-togetherjs
の「Deferring Initialization」セクションを見つけました。この行を置き換える方法がわかりません:
MyApp.onload = callback;
MyApp.onload の代わりに Galleria's.ready イベントが必要です。