Я пытаюсь получить доступ к Dojo в своем веб-приложении, и у меня возникают проблемы с получением того, что мне нужно. В частности, у меня есть веб-приложение в iframe с загруженными разными версиями 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
, который якобы мне не следует использовать. Это дает мне доступ к додзё с окном, но не к додзё с iframe, которое я действительно хочу.
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);
Любые предложения по другим вещам, которые я могу попытаться получить, чтобы получить доступ к Dojo 1.0 в iframe? Или, если это не так, по крайней мере, выясните, как получить доступ к виджетам додзё, определенным в iframe, используя додзё, к которому у меня есть доступ?