Бесшовные атрибута HTML5 и тега iframe


в HTML5 iframe имеет новые атрибуты, такие как "бесшовные", которые должны удалять границы и полосы прокрутки. Я пробовал, но, похоже, не работает, я все еще вижу полосы прокрутки и границы (я использую Google Chrome в качестве браузера), Вот мой код:

<iframe seamless="seamless" title="google" width="600" height="300" src="http://www.google.co.uk"></iframe>

есть идеи, почему это не работает?

еще один вопрос, Можно ли настроить таргетинг на определенный раздел страницы внутри iframe?

10 62

10 ответов:

Он еще не поддерживается правильно.

Chrome 31 (и, возможно, более ранняя версия) поддерживает некоторые части атрибута, но он не полностью поддерживается.

Обновлено: Октябрь 2016

The seamless атрибут больше не существует. Первоначально он был включен в первую спецификацию HTML5, но впоследствии был отброшен. Несвязанный атрибут с тем же именем сделал краткую камею в проекте HTML5.1, но это слишком был брошен в середине 2016 года:

поэтому я думаю, что суть всего этого как со стороны разработчика, так и со стороны веб-разработчика заключается в том, что seamless as-specced, похоже, не то, что кто-то хотел начинаться. Или, по крайней мере, это больше, чем кто-либо на самом деле хотел. И вообще вроде @annevk говорит, кажется, что многое из этого с тех пор было" преодолено событиями " в свете Shadow DOM.

другими словами: очистить seamless атрибут из вашей памяти, и сделать вид, что он никогда не существовал.

ради потомства, вот мой оригинальный ответ от пяти лет назад:

оригинальный ответ: апрель 2011

атрибут находится в режиме Черновика в данный момент. По этой причине ни один из текущих браузеров пока не поддерживает его (поскольку реализация может быть изменена). Тем временем, лучше всего просто использовать CSS для удаления границ / полос прокрутки из iframe:

iframe[seamless]{
    background-color: transparent;
    border: 0px none transparent;
    padding: 0px;
    overflow: hidden;
}

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

наконец, версии Internet Explorer (8 и более ранних) требуют дополнительных атрибутов для удаления границ, полос прокрутки и цвета фона:

<iframe frameborder="0" allowtransparency="true" scrolling="no" src="..."></iframe>

естественно, это не проверяет. Так что это до вас, как справиться с этим. Мой (придирчивый) подход состоял бы в том, чтобы обнюхать строку агента и добавить атрибуты для версий IE ранее 9.

надеюсь, что это поможет. :)

согласно последней рекомендации W3C HTML5 (которая, вероятно, будет окончательным стандартом HTML5), опубликованной сегодня, есть нет бесшовного атрибута в элементе iframe

можно использовать атрибут semless прямо сейчас, здесь я нашел немецкую статью http://www.solife.cc/blog/html5-iframe-attribut-seamless-beispiele.html

а вот еще одна презентация на эту тему:http://benvinegar.github.com/seamless-talk/

вы должны использовать окно.метод postMessage для связи между родительским и iframe.

Я подумал, что это может быть полезно для кого-то:

в chrome версии 32, 2-пиксельная граница автоматически появляется вокруг iframes без бесшовного атрибута. Его можно легко удалить, добавив Это правило CSS:

iframe:not([seamless]) { border:none; }

Chrome использует тот же селектор с этими стилями пользовательского агента по умолчанию:

iframe:not([seamless]) {
  border: 2px inset;
  border-image-source: initial;
  border-image-slice: initial;
  border-image-width: initial;
  border-image-outset: initial;
  border-image-repeat: initial;
}

iO8 имеет удалены поддержка бесшовного атрибута iframe.

  • протестировано в Safari, HomeScreen, new WKWebView и UIWebView.

полная информация и обзор производительности других изменений iOS 8:

вам нужно только написать

бесшовные

в коде. В этом нет необходимости:

бесшовные ="бесшовные"

Я только что узнал сам.

изменить-это не удаляет полосы прокрутки. Странно

прокрутки="нет" все еще, кажется, работает в html5. Я пробовал использовать переполнения функция со встроенным стилем, как рекомендовано html5, но это на меня это не действует.

используйте атрибут frameborder на вашем iframe и установите его в frameborder="0" . Это создает бесшовный вид. Теперь вы, возможно, говорите, что я хочу, чтобы вложенный iframe контролировал, а у меня есть полосы прокрутки. Затем вам нужно создать файл сценария JavaScript, который вычисляет высоту минус любые заголовки и устанавливает высоту. Debounce-это плагин javascript, необходимый для обеспечения надлежащего изменения размера в старых браузерах, а иногда и в chrome. Это приведет вас в правильном направлении.

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

к январю 2014 года бесшовный iframe по-прежнему не поддерживается для Firefox ни IE 11, и он поддерживается Chrome, Safari и Opera (версия webkit)

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

http://html5test.com/results/desktop.html

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

Я не смог найти ничего, что соответствовало бы моим требованиям, hece я придумал этот скрипт (зависит от jQuery):

https://gist.github.com/invernizzie/95182de86ea9dc5daa80

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