我正在尝试在我的 web 应用程序中访问 Dojo,但在获取所需内容时遇到了问题。具体来说,我在 iframe 中有一个 webapp,加载了不同版本的 Dojo:
在 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
我不应该使用哪个。它使我可以访问 window'd Dojo,但不是我真正想要的 iframe'd 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 小部件?