Междоменный и iFrames - PullRequest
       30

Междоменный и iFrames

0 голосов
/ 07 декабря 2011

Я пытаюсь что-то, что я действительно не могу понять.У меня есть iFrame, загружающий некоторый контент из другого домена, на который у меня нет власти.То, что я «просто» пытаюсь сделать, это извлечь содержимое iFrame, чтобы использовать его в PHP / Javascript.Вот где я столкнулся с проблемой «междоменных».Я не могу получить доступ к содержимому iFrame.Так расстраивает.

Так что я прочитал, прочитал еще немного и увидел о функции postMessage (), предоставляемой HTML5.Я видел решение с этой системой, но я все еще не могу понять одну точку.В основном это работает с отправителем и слушателем.Поэтому мне нужно иметь прослушиватель в iframe, который при запуске отправит содержимое обратно в главное окно.

Но КАК добавить некоторый код в уже загруженный iFrame, не удаляя содержимое?

Мне не нужно использовать postMessage (), я могу быть чем угодно, пока я могу получить этот чертов контент!

Любое предложение приветствуется!

Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 декабря 2011

Это все еще невозможно и не зря!

Для чтения из другого домена с использованием файлов cookie, IP-адреса и учетных данных клиента требуется, чтобы просматриваемая страница каким-либо образом предоставляла информацию - это двусторонний разговор с совместным использованием Слушателя (Внешняя страница) и Отправителя (IFrame).

Причина, по которой это необходимо: представьте себе создание IFrame, занимающего 100% страницы. Вы можете отобразить форму входа в общий веб-сайт в IFrame и, тем не менее, перехватывать нажатия клавиш / изменения в поле ввода и регистрировать их. Пользователь узнает разницу, только если проверит URL.

Если у вас есть контроль над браузером пользователя, вы можете использовать междоменный AJAX GreaseMonkey для получения содержимого IFrame (при условии Firefox / Chrome)

0 голосов
/ 07 декабря 2011

Не поможет что-то вроде этой справки:

function getContentFromIframe(iFrameName)
{

    var myIFrame = document.getElementById(iFrameName);
    var content = myIFrame.contentWindow.document.body.innerHTML;

    //Do whatever you need with the content    

}


...