Доступ к текущей странице в iframe

Тема в разделе "JavaScript", создана пользователем zaxap83, 21 дек 2014.

Модераторы: ZiX
  1. zaxap83

    zaxap83 Постоялец

    Регистр.:
    6 дек 2010
    Сообщения:
    87
    Симпатии:
    28
    Нужно всего навсего получить ссылку на страницу в iframe, на которой находится пользователь, вроде все просто. Так я думал сначала, в итоге это "просто" для меня когда-то обернулось целым кошмаром, т.к. страница во фрейме с другого домена, а без доступа к ней весть проект терял смысл. Средствами javascript данную проблему не решить и я тогда выкрутился с помощью прокси (php/perl, несколько разных, в зависимости от сайта, где какой лучше работал), но сайтов больше сотни и множество из них просто отказываются работать корректно через прокси, а те что работают, делают это довольно медленно, т.к. моему серверу нужно сначала скачать страницу, потом только выдать ее пользователю. Так вот собственно вопрос - есть ли какая либо альтернатива javascript в данном случае? Может быть можно решить мою проблему, т.е. отказаться от прокси и использовать обычный iframe и выуживать линк с помощью flash/java/дополнений к браузерам (chrome/ff/opera)? Если дополнения способны обойти ограничение браузера на получение линка из iframe, то подскажите как.
     
    Последнее редактирование: 23 дек 2014
  2. vipTelnet

    vipTelnet Постоялец

    Регистр.:
    14 янв 2013
    Сообщения:
    135
    Симпатии:
    11
    Что то не совсем ясна суть проблемы но получить массив фреймов на странице на сколько я знаю можно из массива frames
    а что б получить доступ к основному окну используйте top
    таким образом top.frames[0] даст Вам ссылку на первый фрейм
     
  3. zaxap83

    zaxap83 Постоялец

    Регистр.:
    6 дек 2010
    Сообщения:
    87
    Симпатии:
    28
    Проблема в том, что во фрейм грузится другой домен и доступа к содержимому не получить из-за политики безопасности браузера. Поправил первый пост.
     
    Последнее редактирование: 23 дек 2014
  4. Vishez

    Vishez

    Регистр.:
    19 авг 2013
    Сообщения:
    170
    Симпатии:
    81
    Можно сделать скрипт-парсер на том же домене. Этот парсер будет полностью загружать в себя нужный сайт с другого домена. Но делать он это будет по урлу переданному в параметре. Все ссылки придется заменять во время парсинга на адрес твоего скрипта с нужным адресом сайта в параметре, чтобы скрипт не ушел на другой домен. Потом через джаваскрипт просто читаешь текущий урл айфрейма с парсером и вычленяешь из него параметр с адресом сайта.
     
  5. zaxap83

    zaxap83 Постоялец

    Регистр.:
    6 дек 2010
    Сообщения:
    87
    Симпатии:
    28
    Угу, называется это web прокси (еще раз мой первый пост прочтите), примерно таким образом сейчас и работает. Мне нужно от этого как-то уйти, чтоб в iframe грузился оригинальный сайт, без всякой предварительной обработки, потому как многие сайты сейчас просто под завязку напиханы js/ajax и работать корректно через прокси просто не могут, под каждый нужно лепить костыль и то, если получится, а таких сайтов сотня.
    Суть вопроса - могут ли какие либо плагины/дополнения (дополнения для браузеров, java, flash, что угодно) обходить данное ограничение политики безопасности браузера?
     
  6. sly2000

    sly2000 Постоялец

    Регистр.:
    10 июн 2011
    Сообщения:
    83
    Симпатии:
    7
    Тоже актуальный вопрос. Пытался найти хоть какой нибудь мало-мальски готовый скрипт и ничего не нашел.
     
  7. Aglok

    Aglok ∞³

    Регистр.:
    9 янв 2012
    Сообщения:
    162
    Симпатии:
    46
    Везде в js, во фрейме и основном файле пропиши:
    Код:
    document.domain = 'http://website.ru';
    Укажи для всех фреймов, принадлежность одному домену.
     
  8. zaxap83

    zaxap83 Постоялец

    Регистр.:
    6 дек 2010
    Сообщения:
    87
    Симпатии:
    28
    Любопытно, а как же это сделать во фрейме?
     
  9. andystill

    andystill Постоялец

    Регистр.:
    23 апр 2012
    Сообщения:
    60
    Симпатии:
    7
    Согласно политики безопасности для управления контентом "родственного домена" - этот домен должен у себя прописать в коде
    document.domain = "ваш урл"
    В самых ранних версиях Js этого не нужно было делать.
    Вашей темой, ТС, я давно интересовался, но так пока и не нашёл ответа.
    Исключения могут быть если сайт который надо во фрейме выдавать и управлять "как-то" - во флеше, тогда через исходник парсить и выдавать (потому как декодеры флеша имеются и политика там немного другая)
     
  10. zaxap83

    zaxap83 Постоялец

    Регистр.:
    6 дек 2010
    Сообщения:
    87
    Симпатии:
    28
    Похоже решения нет в принципе, кроме прокси, которое меня не устраивает.
    Для себя нашел выход - отказ от iframe и написание дополнений для браузеров, чтоб человек установил дополнение и у него всегда была возможность на одном из сайтов из списка передать нужную информацию на мой сайт, в моем случае это просто текущая страница пользователя на сайте и скриншот. Только опыта в написании дополнений 0, придется много курить мануалов, благо с js проблем нет.