Доступ к содержимому iframe в Adobe Air - PullRequest
2 голосов
/ 24 апреля 2009

У меня были большие проблемы с выяснением того, как я могу получить доступ к контенту в iframe в Air. Вот пример кода jquery, с которым я тестировал.


$(document).ready(function(){
    $("#frame").ready(function(){
        air.trace($("#frame").contents().find("body").html());
        air.trace(window.frames["frame"].innerHTML);
        air.trace(document.getElementById("frame").innerHTML);
    });
});

Я использую iframe.

<iframe src="http://google.com" id="frame" width="100%" sandboxRoot="http://google.com/" documentRoot="/" name="frame" height="600"></iframe>

Выход из вышеприведенного кода:


null
undefined


Как видите, содержимое всегда либо пустое, либо неопределенное, либо пустая строка. Я пропускаю что-то, что мешает мне получить доступ к содержанию iframe? Любые предложения будут ценны.

Ответы [ 3 ]

3 голосов
/ 25 апреля 2009

Решение было здесь http://help.adobe.com/en_US/AIR/1.1/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7f08.html

Вот пример того, как я это заработал.

<iframe src="http://google.com/local/iframe.html" id="frame" width="100%" sandboxRoot="http://google.com/local/" documentRoot="app:/" name="frame" height="600"></iframe>

Все, что запрошено у sandboxRoot (например, http://google.com/local)), будет использовано из корня документа и будет обрабатываться так, как если бы оно принадлежало тому же домену (google.com).

В iframe.html я могу получить доступ к iframe в Google так же, как если бы он был из того же домена.

Я знал, что должен быть способ сделать это:)

2 голосов
/ 28 декабря 2011

Как и многие другие, я тоже изо всех сил пытался это выяснить.

Решение дано выше tomfmason , но даже тогда мне потребовались целые века, чтобы действительно понять , что происходило.

Чтобы помочь всем, кто еще пытается использовать AIR html + js для создания веб-браузера или получения данных с удаленной веб-страницы, я создал очень простой проект AIR 3.2 (файл ZIP размером 1,7 МБ), можно найти по адресу:

http://adobe -air-js.blogspot.com / 2011/12 / пневмо-чтение-дом-оф-дистанционного веб-page.html

AIR действительно довольно гладкий, как только человек преодолевает начальные сложности. Я нахожу его на порядок более надежным / удобным, чем Титан.

Удачи! ~ Крис

1 голос
/ 24 апреля 2009

Adobe AIR - это просто браузер (на самом деле WebKit ), и поэтому он следует правилам, которым следуют браузеры Правило, которое регулирует вашу проблему здесь, упоминается как "same-origin-policy".

Если он не находится в одном домене, браузер не позволит вам получить доступ к данным или контенту с этого сайта, поэтому вы получите этот результат. Используйте API AJAX на основе Json, если вы хотите получать данные из другого домена.

Пример того, у кого еще есть эта проблема:

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