Web アプリケーション内で Dojo にアクセスしようとしていますが、必要なものを取得するのに問題があります。具体的には、さまざまなバージョンの Dojo がロードされた iframe に webapp があります。
Firebug では、次のことができます。
window.dojo.version; // 1.7
window.frames[0].window.dojo.version; // 1.0
(iframe は親と同じドメインにあることに注意してください)
GreaseMonkey では、どちらのバージョンの Dojo も見つかりません。
dojo // undefined
window.dojo // undefined
window.frames[0].window.dojo // undefined
unsafeWindow
私はおそらく私が使用すべきではないものを調べ始めました。ウィンドウ化された Dojo にはアクセスできますが、実際に必要な iframe 化された Dojo にはアクセスできません。
unsafeWindow.dojo.version // 1.7 (wrong version)
unsafeWindow.frames[0].dojo // undefined
unsafeWindow.frames[0].window.dojo // undefined
window.frames[0].window.dojo // undefined
window.frames[0].unsafeWindow // undefined
window.frames[0].window.unsafeWindow // undefined
試してみましwithDoc
たが、間違って使用していると思われます:
unsafeWindow.dojo.withDoc(window.frames[0].window, function(){
var dijit = unsafeWindow.dijit; // seems wrong; doesn't work
var widget = dijit.byId('someWidgetInsideIframe');
console.log(widget); // undefined
}, this);
iframe で Dojo 1.0 にアクセスするために他に何か提案はありますか? そうでない場合は、少なくとも、私がアクセスできる Dojo を使用して、iframe で定義された Dojo ウィジェットにアクセスする方法を見つけてください。