| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Получить содержимое iframe |
| Автор: inlanger 9.6.2008, 11:00 |
| Помогите, пожалуйста, с решением такой проблемы... Есть страница с ифреймом. Необходимо получить и обработать "на лету" содержимое этого ифрейма. Именно то содержимое, которое сейчас на экране у пользователя(то есть к серверу обращаться нельзя). Единственное, что приходит в голову - вывести ифрейм на экран, с помощью javascript записать его содержимое в файл, в другом ифрейме через php получить содержимое файла и обработать... В правмльном направлении я мыслю? И как это реализовать(javascript часть)? Заранее огромное спасибо! |
| Автор: krundetz 9.6.2008, 11:43 | ||
|
| Автор: inlanger 9.6.2008, 11:59 |
| И куда это? Я новичёк в javascript... Мне, пыхаписту, трудно понять этот код |
| Автор: krundetz 9.6.2008, 12:55 | ||
У вас есть iframe как я понял он у вас невидимый. В него загружена некая информация. Приведенный код вернет вам эту информацию. Тоесть содержимое.
Вставте этот код в канец вашего файла с iframe и поймете что он возвращает. |
| Автор: inlanger 9.6.2008, 13:02 |
| Выскакивает пустой алерт... |
| Автор: krundetz 9.6.2008, 13:07 |
| Значит либо у вас несколько iframe на странице или у вас туда ничего не подгружено изначально. |
| Автор: inlanger 9.6.2008, 13:11 | ||
и ничего вообще не происходит... з.ы. пустой алерт это я уже сам намудрил. |
| Автор: krundetz 9.6.2008, 22:58 | ||
| Рекомендую ознакомится вот с этой статьей: http://www.kruglov.ru/articles/nontrivialjs/#iframe Тоесть вот такой вариант:
будет работать при условие что file.html загружен с того же ресурса с которого загружен основной файл. Добавлено @ 23:01 А вообще помоему вы хотите получить нечто готовое не прилогая усилий так какк все что я расказал не является какойто нетривиальной вешью и выдается в числе первых ссылок поисковыми системами по запросу iframe javascript. Сами же вы даже видимо ничего и не пробовали найти. |
| Автор: Ghirik 9.6.2008, 23:23 | ||
Например так
Выдаст ширину таблицы (id=tab1) в фрейме I1 Добавлено через 2 минуты и 11 секунд Если, конечно, в фрейме содержимое вашего сайта. |
| Автор: sergeyrg 4.4.2012, 14:50 |
| а как быть если данные в ифрейме с другого домена, и уже пару форм отправлялось по посту, а мне нужно только считать инфу из него а на любые попытки достучаться до контента фрейма (типа var ifr=parent.window.frames['ifr'].document.getElementById('restable').innerHTML;) получаю примерно такой ответ: Ошибка: Permission denied to access property 'document' :(((( Добавлено через 5 минут и 23 секунды вот нарыл в инете мысль: На своем домене сделать страницу-proxy. Т.е. по запросу к этой странице с параметром url — ваш серверный код (php, aspx, ...) будет слать запрос на указанный url и возвращать содержимое. Т.о. контент страницы любого url будет доступен с вашего домена. Теперь запрет на доступ к контенту снят, т.к. запрос на саму страницу и содержимое iframe — будут идти на один домен, что не является нарушением безопасности при попытке обращения через JS. У данного решения существует ряд устранимых недостатков. вопрос, как это сделать? да ещё так чтобы можно было форму по посту кинуть, и не просто форму, а с капчей заполненной. мож кто примерчик кода такой прокси редиректилки покажет? Добавлено через 8 минут и 31 секунду только желательно без курла - ибо курл картинку капчи при эхе результата перерисовывает другую |
| Автор: sergeyrg 6.4.2012, 15:52 |
| удалось кое что сделать немного нетривиально, используя временные файлы браузера, если у вас задача схожа с моей - может мой пост кому-то поможет. (заранее извиняюсь если упоминание php и иже - офтоп) у меня задача была такая: нужно было получать данные с чужого сайта, на каждый поиск вводилась капча; с помощью курла удалось только симитировать заполнение формы запроса, капчу не получилось подтверждать. мне нужно было по-максимуму автоматизировать, т.к. на количество запросов около 1000 каждый клик усложняет задачу. я сделал так: на моей странице циклически перебираются поисковые запросы, каждый запрос выводит в ифрейме форму ввода капчи, я ввожу буковки с картинки, подтверждаю, потом в этом же ифрейме показывается результат поиска за пределами ифрейма кнопочка которая просто перегружает страницу и уходит на следующий запрос. каждая такая страница сама по себе сохраняется во временных файлах со всем контентом, включая содержимое ифрейма, с одинаковыми именами (это у меня в конкретной ситуации, может быть и по-другому) типа "имя_файла[1].htm","имя_файла[2].htm" и т.д. (я пользовал ИЕ, может в других браузерах по-другому) мне остается только свалить это всё в отдельную папку, и отдельным перебрать в цикле и распарсить нужные мне данные. рад если помог, мне самому даже мелкий совет иногда экономит недели работы. |
| Автор: Aliance 9.4.2012, 09:52 | ||
Ghirik, ну зачем же так сурово проверять метод получения ссылки на документ фрейма? Вот http://forum.vingrad.ru/index.php?showtopic=44559&view=findpost&p=355349 я предлагал более простое решение:
|
| Автор: sergeyrg 9.4.2012, 10:10 |
| я пробовал подобные схемы, но меня не пускает дальше .document ни ИЕ ни ФФ на parent.window.frames['ifr'].document уже ошибка доступа, так же и на ..document.frames.ifr.document ..window.frames['ifr'].contentWindow ..document.getElementById("ifr").contentWindow я пробовал эту дыру безопасности микрософта в ИЕ - не работает, и в ИЕ6 и в ИЕ7 доступа нет: "Отказано в доступе" в ИЕ и Permission denied to access property в ФФ если есть рабочий пример, покажите плиз, мож я что не так делаю.... |
| Автор: Aliance 9.4.2012, 13:58 | ||
| Дай-ка догадаться, видимо ты пытаешься получить доступ к элементам фрейма с другого сервера? http://forum.vingrad.ru/index.php?showtopic=44559&view=findpost&p=355349 я писал о невозможности такого действия:
|
| Автор: sergeyrg 9.4.2012, 18:26 |
| про "нельзя" мне все поисковые сервера неделю шептали, а мне "надо", и я нашел способ всё это обойти, кривовато - но свою задачу я выполнил ;) |
| Автор: Aliance 9.4.2012, 18:36 |
| Дай-ка догадаюсь, only IE? В любом случае, у нас принято делится найденным самостоятельно решением, кому-то может пригодится. |