2017-02-15 4 views
0

Я написал страницу, поданную с домена banana.example.com. Я владею этим доменом. Цель страницы заключается в том, чтобы она была встроена в страницы с mango.example.com, которых у меня нет. (Тот же «большой домен», но не точно в том же домене.) Это отлично работает. Я даю людям в Mango URL-адрес, и они могут вставлять мою страницу Banana в iframe на их сайте.Доступ к информации с внешней страницы из встроенного iframe

Я бы хотел, чтобы моя страница отображала немного другое содержимое в зависимости от того, какая именно страница на mango.example.com встроена.

Если я пишу:

console.log(window.parent.window.location); 

я получить полный URL-адрес, выводимый на консоль в качестве объекта Location, но я не могу получить доступ к любому из свойств объекта (например, HREF, имя пути) или использовать либо подразумеваемые или явные методы для форматирования объекта местоположения.

Есть ли способ получить информацию о странице, на которой находится моя страница? URL, название, что-нибудь? (Для целей этого вопроса, пожалуйста, предположите, что у меня есть только авторитет над banana.example.com и я не могу попросить людей на mango.example.com что-либо сделать.)

+0

У вас есть доступ к встроенному сценарию страницы или к любой дополнительной конфигурации? Потому что вы можете передать текущий URL-адрес с помощью параметров запроса или POST-данных. – Hydro

+0

Я могу написать JavaScript (или PHP, если это поможет) на стороне «банана». Непонятно, как в этом играют параметры запроса или данные POST. Можете ли вы уточнить? – anaximander

+0

Тогда забудьте, вы ничего не можете сделать. Когда я ссылался на данные POST, я имел в виду тело запроса POST или параметры запроса URL до фрагмента #, то есть: http: blah.com? P1 & p2 = blah & url = encodedURL' – Hydro

ответ

0

Это из-за(Совместное использование ресурсов происхождения). Решение этой проблемы состояло бы в том, чтобы отправить сообщение на внешнюю страницу с запросом информации, которая, в свою очередь, отправит ответ на ваш iframe, который будет иметь обработчик для этого. Читайте перевод информации о postMessagehere. Обратите внимание, что в случае, если вы не контролируете внешнюю страницу, вы не сможете решить эту проблему. Вам нужно будет убедить владельца Mango получить ваше сообщение, где iframe запрашивает информацию и использует postMessage для ответа на него.

+0

Вот чего я боялся. Спасибо за подтверждение. – anaximander

+0

Упс! Это комментарий – Hydro

+0

@handoncloud Я полагаю, что ваш комментарий относится к длине ответа. Ответ полностью ответил на вопрос, и в такой ситуации я был бы очень удивлен, если бы добавление большей длины сделало бы это «лучшим» ответом. Короткий полный ответ превосходит длинный полный ответ, если вы спросите меня. –

Смежные вопросы