Iframe без атрибута src
Я хотел бы создать <iframe>
на странице, но затем добавить src
позже. Если я создаю iframe без атрибута src
, он загружает текущую страницу в некоторых браузерах. Какое правильное значение установлено для src
, так что он просто загружает пустой iframe?
Ответы, которые я видел, следующие:
-
about:blank
-
javascript:false
-
javascript:void(0)
-
javascript:"";
- URL-адрес пустой страницы
Есть ли явный победитель? Если нет, то какие компромиссы?
Я бы не хотел иметь смешанные предупреждения содержания для URL-адресов HTTPS, а также никаких обратных кнопок, истории или перезагрузки странности во всех браузерах от IE6.
Ответы
Ответ 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
в качестве страницы.
Решение: заблокируйте немых пауков.
Ответ 7
Как я писал в этом вопросе: Является ли пустой iframe src действительным?, вполне приемлемо просто оставить атрибут src=
полностью.
Ответ 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".