Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Frame (World Wide Web)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|Conflation of multiple HTML elements for web-page display}} {{Use dmy dates|date=October 2023}} {{More citations needed|date=January 2008}} {{HTML}} In the context of a [[web browser]], a '''frame''' is a part of a [[web page]] or browser [[Window (computing)|window]] which displays content independent of its container, with the ability to load content independently. The [[HTML]] or media elements in a frame may come from a [[Website|web site]] distinct from the site providing the enclosing content. This practice, known as '''framing''',<ref>{{cite web|url=https://fairuse.stanford.edu/overview/website-permissions/linking/|title=Connecting to Other Websites|date=2 April 2013|quote=What makes framing different is that instead of taking the user to the linked website, the information from that website is imported into the original page and displayed in a special "frame". Technically, when you’re viewing framed information, your computer is connected to the site doing the framing—not the site whose page appears in the frame.}}</ref> is today often regarded as a violation of [[same-origin policy]]. In [[HTML]], a '''frameset''' is a group of named frames to which web pages and media can be directed; an '''iframe''' provides for a frame to be placed inside the body of a document. Since the early 2000s, concern for usability and accessibility has motivated diminished use of framesets and the [[HTML5]] standard does not support them. ==Tags and attributes== The frames in HTML are created using the <code><frameset></frameset></code> tag pair. The <code><frameset></code> tag is a container tag for all other tags that are used to create frames. The <code><frameset></code> tag replaces the <code><body></code> tag in frameset documents.The <code><frameset></code> tag defines how to divide the window into frames. Each frameset defines a set of rows or columns. If user define frames by using the <code>rows</code> attribute then horizontal frames are created. If user define frames by using <code>cols</code> then vertical frames are created. The <code><noframes></code> element may be included so web browsers with frames disabled (or browsers that do not support frames) can display something to the user, as in this example: <syntaxhighlight lang="html"> <frameset cols="85%, 15%"> <frame src="http://www.example.com/frame_1.html" name="frame_1"> <frame src="http://alt.example.com/frame_2.html" name="frame_2"> <noframes> Your browser does not support frames. <a href="http://www.example.com/frame_1.html">Click here</a> to view frame 1. <a href="http://alt.example.com/frame_2.html">Click here</a> for frame 2. </noframes> </frameset> </syntaxhighlight> Framesets have a <code>border</code> attribute. If set to an integer greater than 0, the user can resize the frames by dragging this border, unless a <code>noresize</code> attribute is present in a frame element. If border is set to 0, no border will be displayed and content in different frames will abut each other without delineation. The <code>iframe</code> element is used inline within a normal HTML body, and defines the initial content and name similarly to the <code>frame</code> element. Any text inside an <code><iframe></iframe></code> tag pair will be displayed in browsers that do not understand the iframe tag. <syntaxhighlight lang="html"> <iframe src="http://www.example.com/frame_1.html" height="480" width="640"> Your browser does not support iframes. <a href="http://www.example.com/frame_1.html">Click here</a> to view the content. </iframe> </syntaxhighlight> ==History== {{Expand section|date=January 2008}} [[Netscape Navigator]] 2.0 introduced the elements used for frames in March 1996. Other browser vendors such as [[Apple Inc.|Apple]] with [[Cyberdog]] followed later that year.<ref>{{cite press release|url=http://browserwatch.internet.com/news/story/apple33.html|archive-url=https://web.archive.org/web/20000817100726/http://browserwatch.internet.com/news/story/apple33.html|archive-date=17 August 2000|title=A Present From Apple: Cyberdog 2.0a1|access-date=14 April 2011|publisher=[[Internet.com]]|first=Dave|last=Garaffa|date=23 December 1996|url-status=dead}}</ref> At that time, Netscape proposed frames to the [[World Wide Web Consortium]] (W3C) for inclusion in the HTML 3.0 standard.<ref>{{cite web|archive-url=https://web.archive.org/web/20071030083252/http://docs.rinet.ru/HTMLnya/ch13.htm|archive-date=30 October 2007|url=http://docs.rinet.ru/HTMLnya/ch13.htm|title=Using HTML 3.2, Java 1.1, and CGI; Ch. 13, Frames|first=Eric|last=Ladd}}</ref><!-- original link (not working): http://web.archive.org/web/20071030083252/http://docs.rinet.ru/HTMLnya/ch13.htm --> Frames were used to display and navigate early [[online magazine]]s and [[web apps]], such as [[webmail]] services and [[web chat]] sites. Frames had the advantage of allowing elements to be displayed sitewide without requiring server features such as [[server-side include]]s or [[Common Gateway Interface|CGI]] support. These features were not common on early web servers accessible to the public. Early websites often used a frame at the top to display a banner which could not be scrolled away. These banner frames sometimes included the site's logo as well as [[Online advertising|advertising]].<ref>{{cite book|last=Shafer|first=Dan|title=JavaScript & Netscape wizardry|year=1996|publisher=Coriolis Group Books|location=Scottsdale, AZ|isbn=978-1-883577-86-5|pages=[https://archive.org/details/javascriptnetsca00shaf/page/31 31]|url-access=registration|url=https://archive.org/details/javascriptnetsca00shaf/page/31}}</ref> [[XHTML]] 1.1, the intended successor to HTML 4, removed all frames. [[XFrames]], the intended eventual replacement,<ref>{{cite web | url = http://www.w3.org/TR/xframes/ | title = XFrames working draft | publisher = W3C }}</ref> provided the composite [[Uniform Resource Identifier|URI]] to address a populated frameset. The later [[HTML5]] standard removed framesets by means differing from XHTML.<ref>[http://www.w3.org/TR/html5-diff/ HTML5 differences from HTML4]: "The following elements are not in HTML5 because using them damages usability: frame, frameset, noframes"</ref> The <code>iframe</code> element remains with a number of "[[Sandbox (computer security)|sandboxing]]" options intended for sharing content between sites.<ref>[http://www.w3.org/TR/html5-diff/ HTML5 differences from HTML4]: "The iframe element has new attributes called sandbox and srcdoc which allow for sandboxing content, e.g. blog comments."</ref> ==Advantages== By allowing content to be loaded and navigated independently, frames offered several advantages over the plain HTML in use when they were first developed: * Simplifying maintenance of content shared across all or most pages, such as navigation data.<ref>{{cite web | url = http://www.howtocreate.co.uk/tutorials/html/framesets | title = Framesets }}</ref> If an item needs to be added to a sidebar navigation menu, the web page author needs to change only one web page file, whereas each individual page on a traditional non-frameset website would have to be edited if the sidebar menu appeared on all of them. * Reducing the amount of bandwidth needed by not re-downloading parts of the page which had not changed. * Allowing several pieces of information to be viewed side by side, with the ability for each section to be scrolled independently. This might include the side-by-side comparison of two pictures or videos, or two different ways to understand something, such as an independently scrolling page of text next to video, images, animation, 3D rotating objects, etc. * Allowing footnotes or digressions to appear in a dedicated section of the page when linked to, so that the reader does not lose their place in the main text. * The main advantage to frames is that they enable parts of the page to remain stationary while other parts scroll. This is useful for elements you may not want to scroll out of view, such as navigational options or banner advertising. * Frames unify resources that reside on separate servers. For instance, you may use frames to combine your own material (and navigation graphics) with threaded discussion material generated <ref>{{cite news |last1=Roberts, L |first1=John |title=CSS and SEO |url=https://www.benhaimdigital.com/blog/css-and-seo/ |access-date=28 January 2022}}</ref> ==Criticism== The practice of framing HTML content led to numerous criticisms, most centering on [[usability]] and [[accessibility]] concerns. These include: * Framing breaks the identity between the content and [[URL]] as displayed in the browser, making it difficult to link to or bookmark a particular item of content within the frameset<ref name="Nielsen1996">{{cite web |url= http://www.useit.com/alertbox/9612.html |title=Frames Suck Most of the Time |first=Jakob |last=Nielsen |date=December 1996}}</ref> * The implementation of frames is inconsistent across different browsers<ref name="Nielsen1996" /> *Browsers which render material linearly do not handle frames well.<ref>{{cite web |url=http://www.htmlcodetutorial.com/frames/frames_famsupp_15.html |title=Should You Use Frames? |publisher=HTML Code Tutorial |access-date=7 April 2010 |archive-date=6 August 2016 |archive-url=https://web.archive.org/web/20160806170805/http://www.htmlcodetutorial.com/frames/frames_famsupp_15.html |url-status=dead }}</ref> **[[Screen reader]] programs **text or audio browsers **[[Email]] browsers such as [[Agora (web browser)|Agora]]<ref name="geboyd">{{cite web|title=G.E.Boyd's How To Do Just About Anything by email – Part 1|url=http://www.geocities.com/CapitolHill/1236/howto1.html|publisher=[[GeoCities]]|access-date=24 June 2010|archive-url=https://web.archive.org/web/20000817030717/http://www.geocities.com/CapitolHill/1236/howto1.html|archive-date=17 August 2000|date=11 August 2000}}</ref> **[[Mobile browser]]s * Framing complicates [[web indexing]] and can be detrimental to [[search engine optimization]].<ref>{{cite web|url=http://www.lewesseo.com/seo-fundamentals-1/|title=SEO fundamentals 1|last=Moore-Eded|first=Piers|publisher=Lewes SEO|access-date=25 February 2012}}</ref> * Framing confuses the boundaries between content on different servers,<ref>{{cite web |url= http://budugllydesign.com/frame9806/frames9.htm |archive-url= https://web.archive.org/web/20020328142514/http://budugllydesign.com/frame9806/frames9.htm |url-status= usurped |archive-date= 28 March 2002 |title=I Hate Frames Club}}</ref> which raises issues of copyright infringement<ref name="htmlfaq">{{cite web |url=http://www.html-faq.com/htmlframes/?framesareevil |title=Why are frames so evil?}}</ref> * Visitors arriving from search engines may land on a page intended for display in a frame, resulting in the visitor having no way to navigate to the rest of the site<ref name="prosandcons">{{cite web |title=The Pros and Cons of Frames in Web Pages |url=http://www.mediacollege.com/internet/html/frames/pros-cons.html}}</ref> * Frames change the behavior of the back button.<ref name="prosandcons" /> * Users usually do not expect browsers to print frames the way they do.<ref name="htmlfaq" /> * External links on web pages which use frames may cause other pages to appear in the frameset, since the default behaviour for a link is to load in the current frame if the author does not specify otherwise. This could be used by unscrupulous webmasters to make it appear as though content from another site was actually part of the site hosting the frameset. * If the screen resolution or browser window size is too low then each frame will have scroll bars which can look messy and uses up already limited space. Such behaviour typically resulted more from bad site design (fixed layouts instead of fluid layouts), whereby not all frameset features were put into proper use.<br>This behaviour could be mitigated by: **disabling scrolling for smaller frames that typically did not require a scrollbar; **using fluid design characteristics in target pages instead of fixed designs, so that the content would not cause horizontal scrollbars in the first place. ==Security== Frames create both technical and user-interface difficulties for enforcement of the [[same-origin policy]]. As an example of the latter, an outer page can trick a user into performing an action on an inner page (loaded using the iframe element) which has been made 99% transparent. ==Alternatives== As web technology developed, many of the purposes for which frames were used became possible in ways that avoided the problems identified with frames. * [[Cascading Style Sheets]] (CSS) allowed elements of a page to be scrolled independently (using the <code>overflow</code> property) or held on screen while other content is scrolled (using <code>position:fixed</code>) * [[Server-Side Includes]] allowed shared content to be edited once and automatically delivered to the client as part of a finished page; as server CPU and connection speeds increased, the extra work required to do this on the fly became a lesser consideration. * [[Common Gateway Interface|CGI]] and web-oriented [[scripting languages]] and [[web development]] frameworks such as [[PHP]] and [[Active Server Pages]], as well as database-backed [[Content Management System]]s such as [[WordPress]], provided much richer options for maintaining content and providing navigation. * [[Client-side scripting]] and [[Dynamic HTML]] allowed parts of a page to be visually replaced based on a user's actions. This allowed much more flexibility for showing "side" content, such as footnotes or instructions, as these could now be displayed and hidden anywhere on the page rather than requiring a pre-defined frame. * [[AJAX]] allowed for dynamic display within a page of content even when it needs to be fetched from the server, for instance based on the logged in user or events elsewhere. ==See also== * [[Copyright aspects of hyperlinking and framing]] * [[HTML element#Frames|Frames]] * [[Inline linking]] * [[Deep linking]] * [[Framekiller]] * [[Tableless web design]] ==References== {{Reflist}} ==External links== * [http://www.htmlhelp.org/design/frames/whatswrong.html HTML Help: What's wrong with frames?] * [http://webtips.dan.info/frames.html Dan's Web Tips: Frames] * [https://web.archive.org/web/20120209191256/http://www.4techies.com/webmaster-tips/break-out-of-frames.php Script designed to prevent framing of your content] [[Category:HTML]] [[Category:Web 1.0]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Cite news
(
edit
)
Template:Cite press release
(
edit
)
Template:Cite web
(
edit
)
Template:Expand section
(
edit
)
Template:HTML
(
edit
)
Template:More citations needed
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Use dmy dates
(
edit
)