Доступ к верхнему окну из Iframe в Adobe Air - PullRequest
1 голос
/ 09 февраля 2010

У меня проблемы с Adobe Air. Мое приложение имеет довольно сложную архитектуру: основное окно html загружает iframe со ссылками на javascripts (например, DWRengine.js, jquery.js, main.js и так далее). Это сделано для того, чтобы избежать ограничений javascript для Air в отношении функции 'eval', которая широко используется в моих сценариях и в DWR.

В файле main.js я пытаюсь добавить прослушиватели событий к кнопкам и ссылкам главного окна.

Как это:

$(document).ready(function(){
    $('body', top.document).click(function(){alert('a');});   
});

Но эффекта нет! top.document не определено.

Я не могу привязать действия к событиям при загрузке главной страницы, потому что объекты, содержащие их, загружаются только после события главной страницы onload.

Помогите мне, пожалуйста!

Заранее спасибо, Майк.

1 Ответ

1 голос
/ 09 февраля 2010

Вы работаете в двух разных песочницах, поэтому вам нужно настроить мост песочницы.

В вашем случае вам придется выставлять в интерфейсе методы в изолированной программной среде приложения, используя parentSandboxBridge

вот документы на случай, если у вас их нет

Так в верхнем окне

// quoting from the docs
var interface = {};
interface.save = function(text){
    var saveFile = air.File("app-storage:/save.txt");
    //write text to file
}
document.getElementById("yourIframe").contentWindow.parentSandboxBridge = interface;

Конечно, это не сделает ваши библиотеки доступными в родительском объекте, но вы можете обработать его в дочернем элементе и использовать родительский элемент для вещания

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...