Child Page

Display iFrame Contents without Scrollbars

Content that is presented in an iFrame appears with a vertical scrollbar if the length of the child document exceeds the height of the iFrame and with a horizontal scrollbar if the child document elements won’t wrap to the width of the iFrame. There are ways of overriding this behavior, but not without the risk of having scrolbars when not needed, or worse, no scrollbars when required. Sometimes the solution is to set the dimensions of the iFrame to that of the containing document so that scrollbars are not needed. A great idea in theory, but the devil’s in the implementation details here. Provided you’ve got access to the iFrame content, you can pull it off. This tutorial shows you how it’s done.

Using CSS

Originally, iFrame scrollbars were set using the scrolling attribute. It could be set to “auto”, which means that scrollbars appear if needed (the default behavior), “yes” (scrollbars are always shown, whether needed or not), and “no” (scrolbars are never shown, even when needed).

Although still supported in all major browsers, the scrolling attribute has largely been eclipsed by the CSS overflow, overflow-x, and overflow-y CSS properties. It replaced the “yes” and “no” values with “scroll” and “hidden” (“auto” remained), while offering additional values of “visible”, “initial”, and “inherit”.

It would seem evident that if you wanted to show a vertical scrollbar and suppress the horizontal one you would apply a style of “overflow-y:scroll; overflow-x:hidden” to the element. However in practice, this doesn’t have any effect. Instead, you have to apply the CSS values to the child document’s or tag. In essence, the child document is telling the parent how to display it. If you want it the other way around, you have to apply the rules dynamically via scripting, for instance:

function setIframeSize(iframe) < var iframeDocument = iframe.contentDocument || iframe.contentWindow.document; var iframeBody; if (iframeDocument) < iframeBody = iframeDocument.querySelector('body'); iframeBody.style.overflowY = 'scroll'; iframeBody.style.overflowX = 'hidden'; >>

Internet Explorer uses the contentWindow property while most other browsers recognize the contentDocument property. That is why we check for this property first in the OR condition.

Читайте также:  Drawing a line on java

Document Communication via window.postMessage()

Documents on different pages are only allowed to communicate between each other if their domains, protocols and ports are the same. That is, unless the browser supports the HTML5 window.postMessage() function, which provides cross-domain communication between scripts.

window.postMessage(message, targetOrigin, [transfer]);

The message argument can be just about anything, including objects, arrays, and native types (strings, numbers, Dates, etc).

The targetOrigin value must be either an asterisk “*”, slash “/”, or absolute URL. Otherwise a SyntaxError exception will be thrown. As a rule of thumb, if you know the window location, you should provide this specific location instead of just putting an asterisk “*”.

The optional transfer parameter is sent along with the message, and then becomes unusable on the sending side.

In the iFrame document, there is an event handler attached to the body’s onload event. In the handler, the body’s height and width are calculated and sent to the parent document by invoking the parent’s postMessage() function:

      

this is child2this is child2this is child2this is child2this is child2this is child2this is child2this is child2this is child2this is child2

this is child2this is child2this is child2this is child2this is child2this is child2this is child2this is child2this is child2this is child2

this is child2this is child2this is child2this is child2this is child2this is child2this is child2this is child2this is child2this is child2

In the parent document, we need to attach an event handler to the postMessage event that accepts an event as its argument. Inside the function, the first line verifies the sender’s identity using the origin property in order to thwart cross-site scripting attacks. The iFrame’s dimensions are reset according the the event data’s w and h properties – that’s the first argument passed to the postMessage() function above:

     var resizeIFrame = function(event) < var loc = document.location; if (event.origin != loc.protocol + '//' + loc.host) return; var myIFrame = document.getElementById('myIFrame'); if (myIFrame) < myIFrame.style.height = event.data.h + "px"; myIFrame.style.width = event.data.w + "px"; >>; if (window.addEventListener) < window.addEventListener("message", resizeIFrame, false); >else if (window.attachEvent)  

Conclusion

There are a number of ways to set scrollbar options on an iFrame, from simple to complex. The course of action that you select will depend greatly on how much of a priority this issue is to you.

Читайте также:  Php get post query

Источник

Iframe html size no scrolls

Тег (от англ. inline frame — встроенная рамка) создаёт встроенный фрейм, который находится внутри обычного документа, он позволяет загружать в область заданных размеров любые другие независимые документы.

.

Изображения и мультимедиа

Синтаксис¶

Закрывающий тег обязателен.

Атрибуты¶

allow Определяет политику элемента allowfullscreen Разрешает для фрейма полноэкранный режим. Этот атрибут считается устаревшим атрибутом и переопределяется как allow=»fullscreen» . allowpaymentrequest Установите в значение true , если нужно разрежить вызывать функции API платежей. Этот атрибут считается устаревшим атрибутом и переопределяется как allow=»payment» . height Высота фрейма. name Имя фрейма. referrerpolicy Указывает, какой реферер отправить при получении ресурса фрейма sandbox Позволяет задать ряд ограничений на контент загружаемый во фрейме. scrolling Способ отображения полосы прокрутки во фрейме. seamless Определяет, что содержимое фрейма должно отображаться так, словно оно является частью документа. src Путь к файлу, содержимое которого будет загружаться во фрейм. srcdoc Хранит содержимое фрейма непосредственно в атрибуте. width Ширина фрейма.

allowfullscreen¶

Атрибут allowfullscreen разрешает для фрейма полноэкранный режим.

iframe allowfullscreen>iframe> 

Значение по умолчанию

По умолчанию этот атрибут выключен.

height¶

Для изменения размеров фрейма средствами HTML предусмотрены атрибуты width и height . Допускается использовать значения в пикселях или процентах. Если установлена процентная запись, то размеры фрейма вычисляются относительно родительского элемента — контейнера, где находится элемент . В случае отсутствия родительского контейнера, в его качестве выступает окно браузера. Иными словами, width=»100%» означает, что фрейм будет занимать всю ширину веб-страницы.

Если значение высоты или ширины не заданы, то фрейм автоматически принимает размер 300х150 пикселей.

Любое целое положительное число в пикселях или процентах.

Значение по умолчанию

width — 300 пикселей, height — 150 пикселей.

name¶

В обычном HTML-документе при переходе по ссылке в окне браузера текущий документ заменяется новым. Чтобы направить содержимое во фрейм, он должен иметь уникальное имя, задаваемое атрибутом name . В этом случае при создании ссылки у требуется указать атрибут target , в качестве значения которого выступает имя фрейма.

Для указания имени используется набор символов, включая числа и буквы. При обращении к фрейму по имени соблюдайте то же написание, что и в атрибуте name .

Значение по умолчанию

sandbox¶

Атрибут sandbox позволяет установить ряд ограничений на контент, загружаемый во фрейме, к примеру, блокировать формы и скрипты. Это позволяет повысить безопасность текущего документа, особенно в том случае, когда во фрейм загружается документ из непроверенного источника.

iframe src="URL" sandbox="allow-same-origin || allow-top-navigation || allow-forms || allow-scripts" >iframe> 

allow-forms Позволяет содержимому фрейма отправлять формы. allow-modals Разрешает открытие модальных окон, вроде тех, которые делаются с помощью функции alert в JavaScript. allow-orientation-lock Позволяет отключать возможность блокировки экрана. allow-pointer-lock Позволяет фрейму использовать Pointer Lock API. allow-popups Разрешает всплывающие окна (такие как window.open , target=»_blank» , showModalDialog ). allow-presentation Разрешает фрейму использовать Presentation API. allow-same-origin Разрешает загружать содержание фрейма, воспринимая его из того же источника, что и родительский документ. Может использоваться для безопасного открытия контента, блокируя при этом всплывающие окна. allow-scripts Разрешает запуск и выполнение скриптов. Создание всплывающих окон при этом запрещено. allow-top-navigation Позволяет открывать ссылки фрейма в родительском документе.

Допустимо писать несколько значений в любом порядке через пробел. Если указано пустое значение, то устанавливаются все возможные ограничения.

При одновременном использовании значений allow-scripts и allow-same-origin , когда исходный и загружаемый документ одного происхождения, атрибут sandbox игнорируется.

Значение по умолчанию

scrolling¶

Если содержимое фрейма не помещается в отведённые размеры, автоматически появляются полосы прокрутки для просмотра информации. В некоторых случаях, полосы прокрутки нарушают дизайн веб-страницы, поэтому от них можно отказаться. Для управления отображением полос прокрутки используется атрибут scrolling .

iframe scrolling="auto | no | yes">. iframe> 
  • auto — Полосы прокрутки добавляются браузером только по необходимости, в том случае, когда содержимое фрейма превышает его видимую часть.
  • no — Запрещает отображение полос прокрутки.
  • yes — Всегда вызывает появление полос прокрутки, независимо от объёма информации.

Значение по умолчанию

seamless¶

Устанавливает, что содержимое фрейма должно отображаться так, словно оно является частью документа. При этом соблюдается ряд условий:

  • игнорируется атрибут sandbox , если содержимое фрейма и родительского документа взяты из одного источника;
  • ссылки во фрейме открываются не внутри фрейма, а в текущем документе;
  • стили родительского документа применяются и к содержимому фрейма;
  • фрейм считается блочным элементом, у которого ширина задана как auto ;
  • высота формируется автоматически на основе содержимого.

Значение по умолчанию

По умолчанию этот атрибут выключен.

src¶

Указывает адрес файла, который будет загружаться во фрейм. Это может быть HTML-документ, изображение или серверная программа. Допустимо использовать не только путь к файлу, но также имя функции JavaScript, которое возвращает значение.

В качестве значения принимается полный или относительный путь к файлу.

Значение по умолчанию

srcdoc¶

HTML-код содержимого, включая необходимые теги.

Значение по умолчанию

width¶

Для изменения размеров фрейма средствами HTML предусмотрены атрибуты width и height . Допускается использовать значения в пикселях или процентах. Если установлена процентная запись, то размеры фрейма вычисляются относительно родительского элемента — контейнера, где находится элемент . В случае отсутствия родительского контейнера, в его качестве выступает окно браузера. Иными словами, width=»100%» означает, что фрейм будет занимать всю ширину веб-страницы.

Если значение высоты или ширины не заданы, то фрейм автоматически принимает размер 300х150 пикселей.

Любое целое положительное число в пикселях или процентах.

Значение по умолчанию

width — 300 пикселей, height — 150 пикселей.

Спецификации¶

Описание и примеры¶

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
 html> head> meta charset="utf-8" /> title>IFRAMEtitle> head> body> iframe src="page/banner.html" width="468" height="60" align="left" > Ваш браузер не поддерживает встроенные фреймы! iframe> body> html> 

Источник

Оцените статью