Выделите фрейм, содержащий страницу из другого домена - PullRequest
1 голос
/ 05 мая 2011

Я сейчас разрабатываю клон кликтейла.Я записал все взаимодействия с мышью и прокрутки окна, и я планирую воспроизвести их, открыв URL-адрес, который был записан в iframe, а затем переместить изображение мыши в захваченные координаты, изображения, указывающие, когда произошел щелчок, иПрокрутка iframe до захваченных позиций прокрутки

это работало хорошо, когда я просматривал страницу со своего домена в iframe, но как только я отображаю страницу из другого домена, я получаю ошибки об отказе в доступе отКонсоль FF и те же проблемы с IE

это связано с той же политикой происхождения для JavaScript.

Я читал эту статью -> Способы обхода политики того же происхождения

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

Кто-нибудь может предложить подходящий хак для моей ситуации?

Ответы [ 2 ]

1 голос
/ 05 мая 2011

Вы можете использовать прокси-сервер PHP в своем домене, который (а) считывает целевой URL-адрес в строку, (б) добавляет тег base, чтобы изображения, ссылки и т. Д. Работали правильно, а затем (в) печаталстрока.

Конечный результат - страница, идентичная странице из внешнего домена, но размещенная на вашем домене.Это означает, что вы можете выполнить JavaScript в дочернем фрейме из родительского фрейма.

Код для прокси выглядит следующим образом:

<?php
    ini_set("user_agent", $_SERVER['HTTP_USER_AGENT']); // temporarily override CURLs user agent with the user's own

    $page = file_get_contents($_REQUEST["www"]);
    $page = preg_replace("/<[\s]*head[^>]*>/i", "<head><base href='".$_REQUEST["www"]."' /><base target='_blank' />", $page);
    echo $page;
?>

При использовании этого метода необходимо учитывать, что когдаПользователь (или JavaScript) щелкает ссылку на прокси-странице, пользователь будет перенаправлен на страницу в исходном домене (или в другом месте).Это означает, что ваш JavaScript больше не сможет получать доступ или выполнять сценарии в iframe.

Чтобы сделать это следствие более прозрачным, в коде выше для ссылок установлено значение target='_blank'.

1 голос
/ 05 мая 2011

Вы всегда можете подделать это. Возможно, вы могли бы разместить свой iframe в контейнере div (css: overflow: hidden; height: /* some height */), с элементом iframe, установленным на полную высоту страницы, и прокрутить div?

...