Пока удаленный URL-адрес https (как и мой собственный сайт) и удаленный сервер явно не блокирует себя от встраивания в iframe, веб-сайт отлично отображается внутри iframe. Я знаю, как создать серверный скрипт, который может заранее определить, будет ли iframe заблокирован из-за преднамеренной блокировки iframe третьей стороной.
Однако существует ряд причин, по которым iframe блокируется браузером (а не сторонним сервером):
- Если удаленный URL-адрес не https, или перенаправляет на URL-адрес, отличный от https,
он будет заблокирован (браузером) от отображения в iframe. - Если удаленный сайт действительно https, но содержит хотя бы один
ресурс, обслуживаемый http (вместо https), браузер заблокирует
iframe из-за смешанного содержимого.
В целом, я уже знаю, как определить, когда третья сторона блокирует iframe (с помощью серверных сценариев). Меня интересуют только ответы, которые показывают, как определить, когда веб-браузер выполняет блокировку, и как обнаружить это с помощью клиентского JavaScript.
Я вижу эти нефатальные блоки в консоли (shift-ctrl-i), но не знаю, как программно обнаружить их во время выполнения, а затем корректно обработать блоки, предоставив сообщение о том, почему они были заблокированы, и ссылку, чтобы пользователь мог открыть ресурс в новой вкладке. Например, обычно я улавливаю ошибки с помощью операторов try/catch, но не знаю, как отловить эти ошибки на уровне браузера, возникающие из-за местоположения источника iframe, которые, кажется, появляются только в консоли.
Мой приоритет — отображать страницу в iframe каждый раз, когда она не заблокирована, и программно делать что-то еще каждый раз, когда она блокируется.
Это не работает, но это пример чего-то Я пробовал:
Код: Выделить всё
window.addEventListener('error', function(event)
{
console.log(`Caught Using Javascript`, event);
});

Подробнее здесь: https://stackoverflow.com/questions/593 ... -an-iframe
Мобильная версия