Является ли пустой iframe src допустимым?


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

так и есть <iframe src="#" /> действительный или мне нужно использовать что-то еще, как javascript:;, etc

9 57

9 ответов:

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

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

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

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

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

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

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

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

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

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

обновление 8 июня 2012 года:

кажется,'гостиная' спецификаций больше не делает iframe недействительным, если отсутствует:

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

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

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

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

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

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

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

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

(пример jQuery)

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

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

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

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

Для справки

скажем, следующий пример (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 загружается окончательно.

если вы не хотите использовать 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>. Однако цели ваших ссылок должны равняться iframename атрибут т. е. в этом примере TV.