Действителен ли пустой iframe? - PullRequest
65 голосов
/ 10 мая 2011

Я хочу, чтобы в iframe изначально было src пустым, а затем после загрузки страницы; вызовите функцию JS, а затем установите значение src на фактическое значение.

Так что <iframe src="#" /> допустимо ИЛИ мне нужно использовать что-то еще, например javascript:; и т. Д.

Ответы [ 9 ]

90 голосов
/ 10 мая 2011

просто <iframe src='about:blank'></iframe>

46 голосов
/ 10 мая 2011

Рабочий проект HTML 5, , раздел 4.8.2 , говорит (выделено мое):

Атрибут src дает адрес страницы, которую просматривает вложенный браузер.контекст должен содержать.Атрибут, если он присутствует, должен быть действительным непустым URL-адресом , потенциально окруженным пробелами.

Согласно RFC 3986 , действительные URL-адреса должны начинаться с имя схемы , а относительные ссылки не могут состоять только из фрагмента .

Следовательно, # не является допустимым URL-адресом и не должен использоваться в качествезначение атрибута src.

Использовать about: blank вместо.

22 голосов
/ 10 мая 2011

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

Вы должны использовать <iframe src="about:blank" />.

# может быть ссылкой на привязку на текущей странице (или, часто используемой в качестве схемы маршрутизации при работе с AJAX-запросами). Использование его в качестве источника iframe было бы бессмысленным, поскольку iframe не ссылается на содержимое на текущей странице и не используется с запросами AJAX.

about:blank - это кросс-браузерный стандарт для отображения пустого документа.

Обновление от 8 июня 2012 г .:

Похоже, что 'living' spec больше не делает iframe недействительным, если отсутствует атрибут src:

Если при создании элемента атрибут srcdoc не установлен, и атрибут src также не установлен или не установлен, но его значение не может будет решен, контекст просмотра останется на начальном о: пустая страница.

Если оба этих атрибута, однако, не установлены, контекст просмотра по умолчанию будет about:blank. Чтобы обеспечить надлежащую обратную совместимость, рекомендуется быть многословным и пока предоставить about:blank url.

10 голосов
/ 11 января 2012

Похоже, вы также можете полностью исключить src:

http://dev.w3.org/html5/spec/Overview.html#the-iframe-element

Если при создании элемента атрибут srcdoc равен , не установлен, а атрибут src либо также не задан , либо не установлен, но его значение не может быть разрешено, контекст просмотра останется на исходной странице about: blank.

1 голос
/ 24 июня 2018

Если вы не хотите использовать about:blank, вы можете использовать javascript в качестве src для вашего iframe, как в следующем примере:

<iframe name="TV" id="tv" style="width:100%; background: #800000" src="javascript:document.write('<h3>Results Window</h3>')"></iframe>

Приведенный выше пример инициализирует iframe с темно-бордовым фоном, который имеет простое сообщение <h3>Results Window</h3>. Однако цели ваших ссылок должны равняться атрибуту iframe name, т.е. в этом примере TV.

1 голос
/ 06 января 2015

Как часть стандарта схемы about URI, about: blank - это, вероятно, лучший вариант, поскольку он имеет очень хорошую поддержку браузера.

about: blank Возвращает пустой документ HTML с типом носителя text / html и кодировка символов UTF-8. Это широко используется для загрузки пустые страницы в контексты просмотра, такие как iframes в HTML, который затем могут быть изменены скриптами. Вы можете увидеть дальше здесь

1 голос
/ 10 мая 2011

Вы можете попробовать добавить iframe через Javascript, поэтому вам не нужно иметь пустой HTML-код:

(пример jQuery)

<script type="text/javascript">
$().ready(function() {
    $("<iframe />").attr("src", "http://www.bbc.co.uk/").appendTo("body");
});
</script>

Добавление iframeJavascript допускает постепенную деградацию - пользователи без Javascript не увидят пустой iframe.

1 голос
/ 10 мая 2011

Вы можете использовать about:blank в атрибуте src (как упоминалось ранее ariel), в противном случае это приведет к ошибке при обслуживании с защищенной страницы.

Защищенная страница https выдаст ошибку возможно незащищенных данных на защищенном веб-сайте.

0 голосов
/ 10 марта 2018

Для записи

Скажем, следующий пример (Firefox 58, но может присутствовать во всех браузерах).

<link href="css.css" rel="stylesheet" type="text/css"/>
<iframe src='about:blank'></iframe>

Iframe загружается ДО css, поэтому визуализация страницы видна до загрузки css. То есть на долю секунды страница выглядит без CSS.

Вместо того, чтобы:

<link href="css.css" rel="stylesheet" type="text/css"/>
<iframe src='blank.html'></iframe>

Работает нормально, css загружен и iframe загружен окончательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...