Подтвердить что ты не робот

Iframe без атрибута src

Я хотел бы создать <iframe> на странице, но затем добавить src позже. Если я создаю iframe без атрибута src, он загружает текущую страницу в некоторых браузерах. Какое правильное значение установлено для src, так что он просто загружает пустой iframe?

Ответы, которые я видел, следующие:

  • about:blank
  • javascript:false
  • javascript:void(0)
  • javascript:"";
  • URL-адрес пустой страницы

Есть ли явный победитель? Если нет, то какие компромиссы?

Я бы не хотел иметь смешанные предупреждения содержания для URL-адресов HTTPS, а также никаких обратных кнопок, истории или перезагрузки странности во всех браузерах от IE6.

4b9b3361

Ответ 1

Стандартный подход при создании "пустого" iframe (например, iframe shim, например) заключается в установке src как javascript:false;. Это метод, используемый большинством библиотек JavaScript, которые создают прокладки iframe для вас (например, YUI Overlay).

Ответ 2

Не уверен, что все браузеры поддерживают "about: blank", поэтому я бы просто пошел со своей пустой страницей.

Другая идея: почему бы не добавить весь iframe, используя javascript, а не только src?

Ответ 3

Повторите свой комментарий, пояснив, что вы планируете использовать iframe в качестве цели для отправки формы:

Я бы использовал пустой документ на сервере, который отправляет обратно 204 no content.

Он избегает

  • "смешанный контент" в режиме IE и HTTPS
  • Ненужные ошибки, поскольку клиент не понимает протокол javascript:
  • и другие экзотические махинации.

Он также действительный HTML.

Итак, что, если он генерирует дополнительный запрос? Задайте правильные заголовки кеширования, и для каждого клиента будет только один запрос.

Ответ 4

Что насчет

about:blank

Ответ 5

javascript:false:
IE10 и FF (проверено в v23 в Linux) покажут "false" как контент.

javascript:void(0) && javascript:;:
IE покажет ошибку "не отображать веб-страницу" в iframe. Кроме того, при настройке src из действительного URL-адреса на javascript:void(0) страница не будет пуста.

about:blank:
Работает во всех браузерах, но IE 9 отправляет запрос на сервер с пустым "null". Тем не менее лучший вариант ИМО

Оформить заказ http://jsfiddle.net/eybDj/1
Оформить заказ http://jsfiddle.net/sv_in/gRU3V/, чтобы увидеть, как iframe src изменяется при динамическом обновлении с помощью JS

Ответ 6

javascript:false работает в современных браузерах.

Я видел, что это только "сбой", когда немые пауки пытаются загрузить javascript:false в качестве страницы.

Решение: заблокируйте немых пауков.

Ответ 8

IMO: если вы не поместите src, ваша страница не будет проверяться. Но об этом. Если вы поместите src="", ваш сервер зарегистрирует много ошибок 404.

Ничего действительно не так, как в "повреждении". Но тогда, действительно ли неправильно использовать iframe сам по себе?

° -

Ответ 9

Да, я знаю, что я возрождаю старую нить. Подай в суд на меня. Меня интересует ответ.

Я не понимаю, почему включение триггера в виде формы исключает динамическое создание IFrame. Не делает ли это то, что вы хотите?

<html>
<head>
<script type="text/javascript">
function setIFrame(elemName, target, width, height) {
    document.getElementById(elemName).innerHTML="<iframe width="+width+" height="+height+" src='"+target+"'></iframe>";
}
</script>
</head>
<body>
<div id="iframe" style="width:400px; height:200px"></div>
<form onSubmit="setIFrame('iframe', 'http://www.google.com', 400, 200); return false;">
<input type="submit" value="Set IFrame"/>
</form>
</body>
</html>

Ответ 10

Я сталкиваюсь с этой строкой кода:

iframe.setAttribute("src", "javascript:false");

также. Я хотел удалить javascript:URL.

Нашел это примечание от Рабочей группы по технологиям веб-гипертекстовых приложений [Обновлено 2 октября 2019 года]

[https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element][4.8.5_The_iframe_element]

В противном случае выполняются следующие шаги для элементов iframe или frame:

Если для элемента не указан атрибут src или его значение равно пустая строка, пусть URL будет URL "about: blank".