Как читать DOM iframe, загруженного страницей из другого домена?

Есть ли способ получить доступ к DOM документа в iframe из родительского документа, если документ в iframe находится в другом домене? Я могу легко получить к нему доступ, если и родительская, и дочерняя страницы находятся в одном домене, но мне нужно иметь возможность сделать это, когда они находятся в разных доменах.

Если нет, может быть, есть другой способ ПРОЧИТАТЬ содержимое iframe (одним из соображений было создание элемента управления ActiveX, поскольку он предназначен только для внутреннего корпоративного использования, но я бы предпочел, чтобы он был совместим с несколькими браузерами)?

Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
2
0
5 355
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Не совсем. Это важно для безопасности - в противном случае вы можете открыть мой сайт онлайн-банкинга или электронную почту и взломать их.

Вы можете немного ослабить ограничение, установив document.domain, но все же домен верхнего уровня должен быть таким же.

Вы можете обойти это ограничение, передавая запросы через свой собственный сервер (но не забудьте защитить его, иначе люди могут злоупотребить этим)

my.example.com/proxy?url=otherdomain.com/page

Теоретически вы можете получить доступ к содержимому iframe, используя стандартное свойство DOM level2 contentDocument. Практически вы могли обнаружить, что большинство браузеров запрещают доступ к DOM внешнего документа из соображений безопасности. Доступ к полному DOM AFAIK невозможен (хотя может быть некоторая настройка браузера для отключения проверки того же домена); для междоменного XHR популярный трюк - перебрасывать данные туда и обратно в iframe и основной документ с использованием идентификаторов фрагментов URL (см., например, эта ссылка), вы можете использовать тот же метод, но:

  • документ, загруженный в iframe, должен взаимодействовать, и
  • в любом случае у вас нет доступа к полному документу (вы можете прочитать некоторые параметры или, может быть, вы можете попробовать и URL-кодировать весь документ, но это было бы очень некрасиво)

Я только что нашел метод postMessage, представленный в HTML5; он уже реализован в последних версиях браузеров (FF3, IE8 и Safari 4). Он позволяет обмениваться сообщениями между любыми объектами Windows внутри браузера. Подробности см. В документации на MDC и в этом хороший учебник Джона Ресига.

Другие вопросы по теме