【发布时间】:2012-06-05 17:06:14
【问题描述】:
我正在尝试在我的 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 的其他事情有什么建议吗?或者,如果不是这样,至少弄清楚如何使用我 do 有权访问的 Dojo 访问 iframe 中定义的 dojo 小部件?
【问题讨论】:
标签: dojo greasemonkey scriptish