Как получить доступ к параметрам строки запроса внутри IFRAME после перенаправления назад - PullRequest
1 голос
/ 24 января 2020

У меня есть HTML Host1Page с IFRAME, атрибут IFRAME sandbox не включает allow-top-navigation, поэтому на страницу хостинга не влияет навигация, которая может быть запрошена внутри IFRAME. Первоначально IFRAME отображает stati c HTML, который я предоставляю, но затем, как только пользователь взаимодействует с ним определенным образом, HTML javascript перенаправляет текущее окно, которое является содержимым IFRAME в моем случае, на другой хост - Host2Page. В результате IFRAME отображает содержимое Host2Page. Хочу подчеркнуть, что я не устанавливаю свойство IFRAME src, но вместо установки window.location.href я не могу изменить способ перенаправления, потому что мне не принадлежит код, создающий это перенаправление. Как только пользователь заканчивает взаимодействие с этим другим сайтом, Host2Page, он перенаправляется обратно на Uri, соответствующий странице, на которой размещен мой IFRAME - Host1Page, а при перенаправлении Host2Page некоторые данные передаются через параметры запроса. Как мне получить доступ к этому параметру запроса из IFRAME?

Я пытался использовать myIFrame.contentWindow.location.search - но он всегда пуст, а myIFrame.contentWindow.location.href всегда, до и после перенаправить на этот другой сайт, указав на Uri страницы Host1Page, на которой размещен IFRAME.

1 Ответ

0 голосов
/ 25 января 2020

Если вы контролируете содержимое IFRAME, которое загружается после второго перенаправления, вы можете использовать postMessage для отправки значений параметров на родительскую страницу.

const querystringParams = new URLSearchParams(window.location.search);
const querystringValue = querystringParams.get('paramINeed');

window.parent.postMessage(querystringValue, targetOrigin);

Чтобы получить сообщение на ваш родительская страница:

window.addEventListener("message", receiveMessage, false);

с receiveMessage функцией, которая принимает объект события в качестве параметра.

См .: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...