iframe redirect parent window

Перенаправление родительского окна из действия iframe

какой JavaScript мне нужно использовать для перенаправления родительского окна из iframe?

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

12 ответов:

Как было указано ранее, перенаправит Родительский iframe.

window.top относится к объекту окна страницы в верхней части иерархии фреймов.

или альтернативой является следующее (С помощью объекта document)

target=»_parent» отлично сработало для меня. легко и хлопот бесплатно!

@MIP прав, но в более новых версиях Safari вам нужно будет добавить атрибут sandbox(HTML5), чтобы дать перенаправление доступа к iFrame. Есть несколько конкретных значений, которые могут быть добавлены с пробелом между ними.

можно перенаправить из iframe, но не получать информацию от родителя.

это перенаправит главное окно на страницу индекса. Спасибо

Если вы хотите перенаправить на другой домен без необходимости что-либо делать, вы можете использовать ссылку со свойством:

как было сказано ранее, а затем использовать:

, чтобы он автоматически перенаправлять.

Примечание: команда javascript click () должна появиться после объявления ссылки.

перенаправить iframe в Родительском окне по iframe в том же родителе:

Источник

Перенаправить родительское окно из действия iframe

Какой JavaScript мне нужно использовать для перенаправления родительского окна из iframe?

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

ОТВЕТЫ

Ответ 1

Как указано ранее, будет перенаправлен родительский iframe.

Ответ 2

Я обнаружил, что link работает тоже

Ответ 3

window.top относится к объекту окна страницы в верхней части иерархии кадров.

Ответ 4

или альтернатива следующая (с использованием объекта документа)

Ответ 5

target=»_parent» отлично поработал у меня. легко и без проблем!

Ответ 6

@MIP прав, но с более новыми версиями Safari вам нужно будет добавить атрибут sandbox (HTML5), чтобы перенаправить доступ к iFrame. Есть несколько конкретных значений, которые можно добавить с пространством между ними.

Ответ 7

Это решит несчастье.

Ответ 8

Можно перенаправить из iframe, но не получать информацию от родителя.

Ответ 9

Это перенаправит основное окно на индексную страницу. Благодаря

Ответ 10

Если вы хотите перенаправить на другой домен без необходимости делать что-либо, вы можете использовать ссылку со свойством:

как было сказано ранее, а затем используйте:

чтобы он автоматически перенаправлялся.

Примечание. Команда javascript click() должна появиться после объявления ссылки.

Ответ 11

Ответ 12

Мы должны использовать window.top.location.href, чтобы перенаправить родительское окно из действия iframe.

Ответ 13

Перенаправить iframe в родительском окне iframe в том же родителе:

Источник

Исчерпывающий путеводитель по тегу iframe

iframe redirect parent window. Смотреть фото iframe redirect parent window. Смотреть картинку iframe redirect parent window. Картинка про iframe redirect parent window. Фото iframe redirect parent window

Элемент iframe (сокращение от встроенного фрейма), вероятно, является одним из старейших тегов HTML и был представлен ещё в далеком 1997 году в HTML 4.01 Microsoft Internet Explorer.

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

Чтобы помочь вам сформировать собственное мнение и отточить свои навыки разработчика, мы расскажем обо всем, что вам нужно знать об этом противоречивом теге.

Мы рассмотрим большинство функций, которые предоставляет элемент iframe, и поговорим о том, как их использовать, а также о том, как iframe может быть полезен для преодоления некоторых сложных ситуаций. Наконец, мы поговорим о том, как вы можете защитить свой iframe, чтобы избежать потенциальных уязвимостей.

Что такое iframe и зачем мы его используем?

Разработчики в основном используют тег iframe для встраивания другого HTML-документа в текущий.

Скорее всего, вы пересекались с ним, когда вам нужно было добавить сторонний виджет (например, знаменитую кнопку «Нравится» на Facebook), видео с YouTube, или рекламный раздел на вашем веб-сайте.

Например, приведенный ниже код будет отображать квадрат размером 500px с главной страницей Google:

Вот еще один пример, в котором мы показываем кнопку, чтобы твитнуть вашу веб-страницу в Twitter:

Когда вы думаете о iframe, вы должны иметь в виду, что он позволяет вам встраивать независимый HTML-документ с его контекстом просмотра.Таким образом, он будет изолирован от JavaScript и CSS родительского элемента. Это одна из веских причин использования iframe — обеспечить определенную степень разделения между вашим приложением и содержимым iframe.

Тем не менее, как вы увидите дальше в этом руководстве, разделение не так что б идеально.Iframe все еще может вести себя раздражающим или злонамеренным образом.
Как пример — вызывать всплывающее окно или автоматически воспроизводить видео.

(*Привет онлайн-казино, и сайтам любителей клубники )

Чтобы проиллюстрировать, насколько удобна эта изоляция от JavaScript и CSS, давайте взглянем на эти две ситуации:

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

Поскольку iframe предлагает изолированную среду, это означает, что фокус или выделение никогда не теряются, когда вы щелкаете за его пределами. Используя события связи между iframe и родителем (подробнее об этом позже в этой статье), мне удалось в одно мгновение создать мощный редактор.

Атрибуты, которые стоило бы знать работая с iframe

На сегодняшний день существует восемь атрибутов, которые мы можем использовать для настройки поведения или стилизации iframe.

Вы можете найти больше, чем перечисленные выше, но имейте в виду, что они больше не поддерживаются в HTML5: align, frameborder, longdesc, marginheight, marginwidth и scrolling…

*Примечание. По умолчанию элемент iframe имеет рамку вокруг него. Чтобы удалить его, вы можете использовать атрибут style, чтобы установить свойство CSS border в none.

iframe события и общение

Загрузка и ошибки

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

load event — cобытие загрузки. Оно запускается, когда iframe полностью загружен. Другими словами, все статические ресурсы были загружены, и все элементы в дереве DOM вызвали событие load.

Событие ошибки — error event которое вызывается при сбое загрузки.

Вы можете прослушивать их с помощью атрибутов onload и onerror соответственно:

Если хотите, то вы можете добавить слушателей в свой iframe программно.

Общение с фреймами

Довольно легко отправлять сообщения между родителем и iframe. Вы должны использовать функцию postMessage, которая описана в MDN здесь.

От родителя к фрейму

Отправьте сообщение от родительского элемента:

И послушайте его в iframe:

От iframe к родителю

Отправьте сообщение из iframe:

И прослушай это у родителя:

Примечание: имейте в виду, что вы можете оказаться в некоторых хитрых ситуациях, когда вам нужно что-то отладить, так как сообщения запускаются и забываются (fire-and-forget) (иначе говоря. — нет реальной обработки ошибок).

Безопасность

Когда вы используете iframe, вы в основном имеете дело с контентом, полученным от третьей стороны, который вы не можете контролировать.

Таким образом, вы повышаете риск потенциальной уязвимости в вашем приложении или просто сталкиваетесь с плохим пользовательским интерфейсом (например, раздражающим автоматическим воспроизведением видео).

К счастью, вы можете занести в черный список или белый список конкретные функции.

Вы должны использовать sandbox (песочницу) и allow(допустимые) атрибуты.

! Помните, хорошее эмпирическое правило — всегда предоставлять минимальный уровень возможностей, необходимый ресурсу для его работы. Эксперты по безопасности называют эту концепцию «принципом наименьших привилегий».

Атрибут sandbox

Вот полный список флагов песочницы и их назначение:

ФлагОписание
allow-formsПозволяет отправлять формы
allow-modalsПозволяет ресурсу открывать новые модальные окна
allow-orientation-lockПозволяет ресурсу блокировать ориентацию экрана.
allow-pointer-lockПозволяет ресурсу использовать API блокировки указателя (Pointer Lock API)
allow-popupsПозволяет ресурсу открывать новые всплывающие окна или вкладки.
allow-popups-to-escape-sandboxПозволяет ресурсу открывать новые окна, которые не наследуют песочницу.
allow-presentationПозволяет ресурсу начать сеанс презентации.
allow-same-originПозволяет ресурсу сохранять свое происхождение.
allow-scriptsПозволяет ресурсу запускать сценарии.
allow-top-navigationПозволяет ресурсу перемещаться по контексту просмотра верхнего уровня.
allow-top-navigation-by-user-activationПозволяет ресурсу перемещаться по контексту просмотра верхнего уровня, но только если он инициирован жестом пользователя.

Вы несете ответственность, какие привилегии вы можете предоставить каждому iframe.

Например, если вашему iframe нужно только отправить формы и открыть новые модальные окна, вот как вы настроите атрибут песочницы:

В случае, когда атрибут песочницы настроен, а одна функция не работает правильно в ресурсе, это может быть связано с отсутствием определенного флага.
Убедитесь, что вы знаете о них больше, чтобы отладить вещи быстро.
Кроме того, имейте в виду, что использование пустого атрибута «песочница» полностью создаст «песочницу» для iframe.

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

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

Примечание. Атрибут песочницы не поддерживается в Internet Explorer 9 и более ранних версиях.

Атрибут allow

Этот атрибут allow в настоящее время является экспериментальным и поддерживается только браузерами на основе Chromium. Это позволяет вам разрешить определенные функции белого списка, такие как доступ iframe к акселерометру, информации об аккумуляторе или камере.

Доступно более 25 флагов, поэтому я не буду перечислять их все здесь. Вы можете просмотреть их в документации по политике в отношении функциональных возможностей Mozilla.

Я суммировала самые популярные в таблице ниже:

ФлагОписание
accelerometerПозволяет получить доступ к интерфейсу акселерометра
ambient-light-sensorПозволяет получить доступ к интерфейсу AmbientLightSensor
autoplayПозволяет автоматически воспроизводить видео и аудио файлы
batteryРазрешает доступ к API состояния батареи
cameraПозволяет доступ к камере
fullscreenПредоставляет доступ к полноэкранному режиму
geolocationРазрешает доступ к API геолокации
gyroscopeПредоставляет доступ к интерфейсу Sensors API Gyroscope.
magnetometerПредоставляет доступ к интерфейсу магнитометра API датчиков
microphoneПредоставляет доступ к микрофону устройства
midiРазрешает доступ к веб-MIDI API
paymentРазрешает доступ к API запроса платежа
usbРазрешает доступ к API WebUSB
vibrateAllows access to the Vibration API

Что нужно знать о фреймах

Как решать проблемы с браузерами, которые не поддерживают фреймы

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

Как вы можете сделать так, чтобы iframe был частью родительского документа (т.е. без границ и полос прокрутки)?

Для этой цели был введен бесшовный атрибут seamless. Он все еще экспериментален и плохо поддерживается в браузерах (это понимают только Chromium).

*Примечание Он также не является частью спецификации W3C HTML5 на момент написания этой статьи. Ознакомиться тут

Могут ли iframes повлиять на SEO моего сайта?

Я мало что знала об этом, поэтому мне пришлось немного покопаться. Есть много спекуляций вокруг этой темы.

Долгое время краулеры не могли понять содержимое iframes, но это уже не так. Наиболее релевантный ответ, который я нашла, был из этой статьи, и сегодняшний вывод выглядит так:

“Поскольку поисковые системы считают, что содержимое в фреймах принадлежит другому веб-сайту, лучшее, на что вы можете надеяться, — это отсутствие эффекта. Iframes, как правило, не помогают и не повреждают ваш рейтинг в поисковых системах. “

Таким образом, лучше всего предположить, что контент, отображаемый с помощью iframes, может быть не проиндексирован или недоступен для отображения в результатах поиска Google. Обходным путем может быть предоставление дополнительных текстовых ссылок на контент, который они отображают, чтобы робот Googlebot мог сканировать и индексировать этот контент.

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

Могут ли фреймы повлиять на скорость загрузки моего сайта?

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

Чтобы избежать того, что ваши фреймы замедляют работу ваших страниц, хорошим способом является их ленивая загрузка (т.е. загрузка их только тогда, когда они необходимы, например, когда пользователь прокручивает рядом с ними).Этого легко добиться, просто добавив в тег атрибут loading = «lazy».

Имейте в виду, что все современные браузеры на основе Chromium поддерживают это на момент написания этой статьи. Вас заинтересует библиотека lazyload, которая работает везде.

Примечание. Атрибут loading = «lazy» также работает с тегом img, если вы еще этого не знали.

Как я могу сделать iframe отзывчивым?

По мере того, как все больше людей просматривают Интернет с помощью своих телефонов, важно убедиться, что каждый из ваших интерфейсов отзывчивый.Но как это сделать, если на вашей странице есть фрейм?

Мы могли бы посвятить целое руководство относительно множества способов сделать ваш iframe отзывчивым. Вместо этого я просто сошлюсь на две отличные статьи:

Примечание. Если вы используете библиотеку начальной загрузки в своем проекте, есть embed-responsive и встроенные embed-responsive-16by9, которые вы можете использовать прямо из коробки, чтобы адаптировать свои фреймы.

Как предотвратить появление белой вспышки во время загрузки iframe

Да, друзья мои, для этого есть решение. В этой статье Крис Койер делится небольшим фрагментом, который скрывает все iframes на странице с помощью некоторого CSS-кода и удаляет его до тех пор, пока окно не будет загружено, а затем сделает их видимыми.

Как перезагрузить содержимое iframe

Легче лёгкого! Поскольку вы можете получить доступ к элементу окна iframe с помощью contentWindow, вы должны сделать это:

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

Если у вас есть что добавить в эту статью, вы можете связаться со мной в комментариях ниже или просто пинговать меня в Twitter @RifkiNada

Источник

Stop Iframe from preventing scrolling of parent document?

I seem to have the opposite problem of everyone else with iframes and scrolling. I need the iframe (contains a youtube video) to NOT prevent scrolling of the main document. If I hover my mouse over it, the page won’t scroll with the scroll wheel, and according to the latest chrome canary simulation of touch devices, I can’t put my finger on the frame and scroll the main document either. Any way to stop this? My CSS is below:

5 Answers 5

The question is unclear, so I went into some detail below on various ways to achieve this effect and how it works.

If you need to interact with the iframe, either to play a video or click a link, all you need to do is make sure the iframe is large enough to display the full contents. I’m unsure what specific problem OP was encountering as we don’t have their HTML, but if you scroll and the iframe is not also trying to scroll, it will not prevent the parent from scrolling.

Basically, if you have your cursor over an iframe and you scroll, the iframe will receive the event first. If it does not need to scroll (either it can’t or it has already reached the bottom of the iframe) the event will be propagated to the parent.

Finally, if you have an iframe that you need to be scrollable, but you want to scroll the parent while the cursor is on the iframe, you are out of luck. There is no way to inform the iframe that sometimes the user wants to scroll the whole page. This is simply how iframes work. You can either remove the cursor from the iframe to scroll, or scroll to the bottom of the iframe and continue down the page.

Using a YouTube video and the CSS in the question, I’ve included a demo for you to see. I also included two identical iframes that are scrollable and applied pointer-events: none; to one to demonstrate how it works.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *