Вот несколько способов, как можно узнать URL страницы, которая загружена в iframe, с использованием JavaScript:
1. Получить URL из свойства contentWindow.location.href
объекта iframe:
var iframe = document.getElementById('myIframe'); var iframeUrl = iframe.contentWindow.location.href; console.log(iframeUrl);
Здесь мы получаем элемент iframe с помощью метода getElementById()
и сохраняем его в переменную iframe
. Затем мы обращаемся к свойству contentWindow.location.href
объекта iframe, чтобы получить URL загруженной страницы. Конечно, перед этим необходимо иметь доступ к iframe.
2. Если iframe находится в том же домене, можно использовать свойство src
элемента iframe:
var iframe = document.getElementById('myIframe'); var iframeUrl = iframe.src; console.log(iframeUrl);
Здесь мы используем свойство src
элемента iframe, чтобы получить URL, однако этот способ работает только в том случае, если iframe находится в том же домене.
3. Если страница, загруженная в iframe, находится на другом домене (то есть срабатывает политика безопасности Cross-Origin Resource Sharing - CORS), вам может понадобиться сотрудничество владельца этой страницы. Они должны отправить сообщение обратно в родительское окно с помощью метода postMessage()
:
В родительском окне:
window.addEventListener('message', function(event) { var iframeUrl = event.data; console.log(iframeUrl); });
В iframe-странице:
var parentWindow = window.parent; var iframeUrl = window.location.href; parentWindow.postMessage(iframeUrl, '*');
Здесь мы добавляем слушатель событий message
на окно родительской страницы, чтобы прослушивать сообщения, отправленные iframe-страницей. В iframe-странице мы получаем доступ к родительскому окну с помощью window.parent
и используем метод postMessage()
для отправки URL родительскому окну.
Важно отметить, что последний способ требует сотрудничества со стороны iframe-страницы и, конечно, требует корректного использования политики безопасности.