1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
|
---
title: '<iframe>: el elemento Inline Frame'
slug: Web/HTML/Element/iframe
tags:
- Contenido
- Contenido incrustado
- Elemento
- Embebido
- HTML
- Incrustado
- Marcos
- Web
- iframe
translation_of: Web/HTML/Element/iframe
original_slug: Web/HTML/Elemento/iframe
---
<div>{{HTMLRef}}</div>
<p class="seoSummary">El <strong>elemento HTML <code><iframe></code></strong> (de inline frame) representa un {{Glossary("contexto de navegación")}} anidado, el cual permite incrustrar otra página HTML en la página actual.</p>
<div>{{EmbedInteractiveExample("pages/tabbed/iframe.html", "tabbed-standard")}}</div>
<p>Cada elemento <code><iframe></code> tiene su propio <a href="/es/docs/Web/API/History">historial de sesión</a> y su propio objeto <a href="/es/docs/Web/API/Document">Documento</a>. El contexto de navegación que incluye el contenido implícito se llama <em>contexto de navegación principal</em>. El contexto de navegación de nivel superior (que no tiene padre) es típicamente la ventana del navegador, representado por el objeto {{domxref("Window")}}.</p>
<div class="blockIndicator warning">
<p>Debido a que cada contexto de navegación es un entorno de documento completo, cada <code><iframe></code> en una página requiere más memoria y otros recursos informáticos. Aunque teóricamente puede utilizar tantos <code><iframe></code> como desee, compruebe si hay problemas de rendimiento.</p>
</div>
<table class="properties">
<tbody>
<tr>
<th scope="row"><a href="/es/docs/Web/Guide/HTML/categorias_de_contenido">Categorías de contenidos</a></th>
<td><a href="/es/docs/Web/Guide/HTML/categorias_de_contenido#Contenido_dinámico">Contenido dinámico</a>, <a href="/es/docs/Web/Guide/HTML/categorias_de_contenido#Contenido_textual_o_estático">contenido textual o estático</a>, contenido incrustado, contenido interactivo, <a href="/es/docs/Web/Guide/HTML/categorias_de_contenido#Contenido_tangible">contenido tangible</a>.</td>
</tr>
<tr>
<th scope="row">Contenido permitido</th>
<td>Contenido alternativo que normalmente no se renderiza para los navegadores que no son compatibles con el elemento <code><iframe></code>.</td>
</tr>
<tr>
<th scope="row">Omisión de etiqueta</th>
<td>{{no_tag_omission}}</td>
</tr>
<tr>
<th scope="row">Elementos padres permitidos</th>
<td>Cualquier elemento que acepte contenido incrustado.</td>
</tr>
<tr>
<th scope="row">Roles ARIA permitidos</th>
<td>{{ARIARole("application")}}, {{ARIARole("document")}}, {{ARIARole("img")}}</td>
</tr>
<tr>
<th scope="row">Interfaz DOM </th>
<td>{{domxref("HTMLIFrameElement")}}</td>
</tr>
</tbody>
</table>
<h2 id="Atributos">Atributos</h2>
<p>Este elemento admite <a href="/es/docs/Web/HTML/Atributos_Globales">atributos globales</a>.</p>
<ul>
<li>En el atributo <code>target</code> de los elementos {{HTMLElement("a")}}, {{HTMLElement("from")}} y {{HTMLElement("base")}}.</li>
<li>En el atributo <code>formtarget</code> de los elementos {{HTMLElement("input")}} y {{HTMLElement("button")}}</li>
<li>En el parámetro <code>windowName</code> en el método {{domxref("Window.open()","window.open()")}}.</li>
</ul>
<dl>
<dt>{{htmlattrdef("allow")}}</dt>
<dd>Especifíca una <a href="/en-US/docs/Web/HTTP/Feature_Policy">política de características</a> para el <code><iframe></code>. Vea el articulo <a href="https://wiki.developer.mozilla.org/en-US/docs/Web/Privacy">Privacy, permissions, and information security</a> para detalles en temas de seguridad y como <code><iframe></code> funciona con las Politicas de Herramientas para mantener los sistemas seguros.</dd>
<dt>{{htmlattrdef("allowfullscreen")}}</dt>
<dd>Definido como <code>true</code> si el <code><iframe></code> puede activar el modo a pantalla completa llamando al método {{domxref("Element.requestFullscreen", "requestFullscreen()")}}.</dd>
<dd>
<div class="blockIndicator note">
<p>Se considera un atributo heredado y se redefine como <code>allow="fullscreen"</code>.</p>
</div>
</dd>
<dt>{{htmlattrdef("allowpaymentrequest")}}</dt>
<dd>Definido como <code>true</code> si se debe permitir que un <code><iframe></code> de origen cruzado pueda invocar el <a href="/en-US/docs/Web/API/Payment_Request_API">API de solicitud de pago</a>. </dd>
<dd>
<div class="blockIndicator note">
<p>Se considera un atributo heredado y se redefine como <code>allow="payment"</code>.</p>
</div>
</dd>
<dt>{{htmlattrdef("csp")}} {{experimental_inline}}</dt>
<dd>Una <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP">Politica de Seguridad del Contenido</a> aplicada para el recurso incrustado. Vea {{domxref("HTMLIFrameElement.csp")}} para detalles.</dd>
<dt>{{ htmlattrdef("height") }}</dt>
<dd>Indica la altura del frame {{ HTMLVersionInline(5) }}en píxeles CSS, o {{ HTMLVersionInline(4.01) }} en píxeles o como un porcentaje.</dd>
<dt id="name-attribute">{{htmlattrdef("importance")}} {{experimental_inline}}</dt>
<dd>La prioridad de descarga en el recurso para el atributo <code>src</code> del <code><iframe></code>. Valores permitidos:
<ul>
<li><code>auto</code>: (default) Sin preferencia. El buscador utiliza sus propias heurísticas para decidir la prioridad del recurso.</li>
<li><code>high</code>: El recurso debe ser descargado antes que otros recursos de baja-prioridad de los recursos de la página.</li>
<li><code>low</code>: El recurso debe ser descargado después de otros recursos de alta-prioridad de los recursos de la página.</li>
</ul>
<dl>
</dl>
</dd>
<dt>{{ htmlattrdef("name") }}</dt>
<dd>Nombre objetivo para el contexto de navegación incrustado. Se puede utilizar:
<ul>
<li>En el atributo target de los elementos {{HTMLElement("a")}}, {{HTMLElement("from")}} y {{HTMLElement("base")}}.</li>
<li>En el atributo formtarget de los elementos {{HTMLElement("input")}} y {{HTMLElement("button")}}</li>
<li>En el parámetro windowName en el método {{domxref("Window.open()","window.open()")}}.</li>
</ul>
</dd>
<dt id="attr-referrer">{{htmlattrdef("referrerpolicy")}}</dt>
<dd>Indicates which <a href="https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer">referrer</a> to send when fetching the frame's resource:
<ul>
<li><code>no-referrer</code>: The {{HTTPHeader("Referer")}} header will not be sent.</li>
<li><code>no-referrer-when-downgrade</code> (default): The {{HTTPHeader("Referer")}} header will not be sent to {{Glossary("origin")}}s without {{Glossary("TLS")}} ({{Glossary("HTTPS")}}).</li>
<li><code>origin</code>: The sent referrer will be limited to the origin of the referring page: its <a href="https://developer.mozilla.org/en-US/docs/Archive/Mozilla/URIScheme">scheme</a>, {{Glossary("host")}}, and {{Glossary("port")}}.</li>
<li><code>origin-when-cross-origin</code>: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path.</li>
<li><code>same-origin</code>: A referrer will be sent for {{Glossary("Same-origin policy", "same origin")}}, but cross-origin requests will contain no referrer information.</li>
<li><code>strict-origin</code>: Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP).</li>
<li><code>strict-origin-when-cross-origin</code>: Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS→HTTPS), and send no header to a less secure destination (HTTPS→HTTP).</li>
<li><code>unsafe-url</code>: The referrer will include the origin <em>and</em> the path (but not the <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/hash">fragment</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/password">password</a>, or <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/username">username</a>). <strong>This value is unsafe</strong>, because it leaks origins and paths from TLS-protected resources to insecure origins.</li>
</ul>
</dd>
<dd>
<ul>
</ul>
</dd>
<dt>{{htmlattrdef("sandbox")}}</dt>
<dd>Applies extra restrictions to the content in the frame. The value of the attribute can either be empty to apply all restrictions, or space-separated tokens to lift particular restrictions:
<ul>
<li><code>allow-forms</code>: Allows the resource to submit forms. If this keyword is not used, form submission is blocked.</li>
<li><code>allow-modals</code>: Lets the resource <a href="https://html.spec.whatwg.org/multipage/origin.html#sandboxed-modals-flag">open modal windows</a>.</li>
<li><code>allow-orientation-lock</code>: Lets the resource <a href="https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation">lock the screen orientation</a>.</li>
<li><code>allow-pointer-lock</code>: Lets the resource use the <a href="https://developer.mozilla.org/en-US/docs/WebAPI/Pointer_Lock">Pointer Lock API</a>.</li>
<li><code>allow-popups</code>: Allows popups (such as <code>window.open()</code>, <code>target="_blank"</code>, or <code>showModalDialog()</code>). If this keyword is not used, the popup will silently fail to open.</li>
<li><code>allow-popups-to-escape-sandbox</code>: Lets the sandboxed document open new windows without those windows inheriting the sandboxing. For example, this can safely sandbox an advertisement without forcing the same restrictions upon the page the ad links to.</li>
<li><code>allow-presentation</code>: Lets the resource start a <a href="https://developer.mozilla.org/en-US/docs/Web/API/PresentationRequest">presentation session</a>.</li>
<li><code>allow-same-origin</code>: If this token is not used, the resource is treated as being from a special origin that always fails the {{Glossary("same-origin policy")}}.</li>
<li><code>allow-scripts</code>: Lets the resource run scripts (but not create popup windows).</li>
<li><code>allow-storage-access-by-user-activation</code> {{experimental_inline}}: Lets the resource request access to the parent's storage capabilities with the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Storage_Access_API">Storage Access API</a>.</li>
<li><code>allow-top-navigation</code>: Lets the resource navigate the top-level browsing context (the one named <code>_top</code>).</li>
<li><code>allow-top-navigation-by-user-activation</code>: Lets the resource navigate the top-level browsing context, but only if initiated by a user gesture.</li>
</ul>
<div class="note"><strong>Notes about sandboxing:</strong>
<ul>
<li>When the embedded document has the same origin as the embedding page, it is <strong>strongly discouraged</strong> to use both <code>allow-scripts</code> and <code>allow-same-origin</code>, as that lets the embedded document remove the <code>sandbox</code> attribute — making it no more secure than not using the <code>sandbox</code> attribute at all.</li>
<li>Sandboxing is useless if the attacker can display content outside a sandboxed <code>iframe</code> — such as if the viewer opens the frame in a new tab. Such content should be also served from a <em>separate origin</em> to limit potential damage.</li>
<li>The <code>sandbox</code> attribute is unsupported in Internet Explorer 9 and earlier.</li>
</ul>
</div>
</dd>
<dt>{{ htmlattrdef("seamless") }} </dt>
<dd>This Boolean attribute indicates that the browser should render the inline frame in a way that makes it appear to be part of the containing document, for example by applying CSS styles that apply to the <code><iframe></code> to the contained document before styles specified in that document, and by opening links in the contained documents in the parent browsing context (unless another setting prevents this).</dd>
<dt>{{ htmlattrdef("src") }}</dt>
<dd>The URL of the page to embed.</dd>
<dt>{{ htmlattrdef("srcdoc") }} </dt>
<dd>The content of the page that the embedded context is to contain.</dd>
<dt>{{ htmlattrdef("width") }}</dt>
<dd>Indicates the width of the frame {{ HTMLVersionInline(5) }} in CSS pixels, or {{ HTMLVersionInline(4.01) }} in pixels or as a percentage.</dd>
</dl>
<h3 id="Atributos_obsoletos">Atributos obsoletos</h3>
<p>Estos atributos están obsoletos y es posible que ya no sean compatibles con todos los agentes de usuario. No debe utilizarlos en contenido nuevo y tratar de eliminarlos del contenido existente.</p>
<dl>
<dt>{{htmlattrdef("align")}} {{deprecated_inline("html4.01")}}, {{obsolete_inline("html5")}}</dt>
<dd><span id="result_box" lang="es"><span class="hps">La alineación</span> <span class="hps">de este elemento</span> <span class="hps">con respecto al</span> <span class="hps">contexto que lo rodea.</span></span></dd>
<dt>{{ htmlattrdef("frameborder") }} {{ obsolete_inline("html5")}} </dt>
<dd>El valor 1 (por defecto) indica al navegador establecer una frontera entre este marco y todo otro marco. <span class="long_text" id="result_box" lang="es"><span class="gt-trans-draggable hps">El valor 0</span> <span class="gt-trans-draggable hps">indica</span> <span class="gt-trans-draggable hps">que el navegador no</span> establece<span class="gt-trans-draggable hps"> una</span> <span class="gt-trans-draggable hps">frontera</span> <span class="gt-trans-draggable hps">entre este marco y</span> <span class="gt-trans-draggable hps">otros marcos.</span></span></dd>
<dt>{{ htmlattrdef("longdesc") }} {{ obsolete_inline("html5")}} </dt>
<dd>Una URI de una descripción larga del marco. Debido al mal uso generalizado, esto no es útil para navegadores no visuales.</dd>
<dt>{{ htmlattrdef("marginheight") }} {{ obsolete_inline("html5") }} </dt>
<dd>La cantidad de espacio en píxeles entre el contenido del marco y sus márgenes superior e inferior.</dd>
<dt>{{ htmlattrdef("marginwidth") }} {{ obsolete_inline("html5") }} </dt>
<dd>La cantidad de espacio en píxeles entre el contenido del marco y sus márgenes izquierdo y derecho.</dd>
<dt>{{ htmlattrdef("scrolling") }} {{ obsolete_inline("html5") }} </dt>
<dd>Indica cuándo el navegador debe proporcionar una barra de desplazamiento para el marco:
<ul>
<li><code>auto</code>: Sólo cuando el contenido del marco es mayor que sus dimensiones.</li>
<li><code>yes</code>: Muestra siempre una barra de desplazamiento.</li>
<li><code>no</code>: No muestr la barra de desplazamiento nunca.</li>
</ul>
</dd>
</dl>
<h3 id="Atributos_no_estándar">Atributos no estándar</h3>
<dl>
<dt>{{htmlattrdef("mozbrowser")}} {{non-standard_inline}}</dt>
<dd>
<div class="blockIndicator note">
<p>See {{bug(1318532)}} for exposing this to WebExtensions in Firefox.</p>
</div>
Makes the <code><iframe></code> act like a top-level browser window. See <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Gecko/Chrome/API/Browser_API">Browser API</a> for details.<br>
<strong>Available only to <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a>.</strong></dd>
<dt>{{ htmlattrdef("mozallowfullscreen") }} {{ non-standard_inline() }}</dt>
<dd>In Gecko 9.0 or later, this attribute can be set to <code>true</code> if the frame is allowed to be placed into full screen mode by calling its {{ domxref("element.mozRequestFullScreen()") }} method. If this isn't set, the element can't be placed into full screen mode.</dd>
<dt>{{ htmlattrdef("webkitallowfullscreen") }} {{ non-standard_inline() }}</dt>
<dd>In Chrome 17 or later (and maybe earlier), this attribute can be set to <code>true</code> if the frame is allowed to be placed into full screen mode by calling its {{ domxref("element.webkitRequestFullScreen()") }} method. If this isn't set, the element can't be placed into full screen mode.</dd>
<dt>{{ htmlattrdef("mozapp") }} {{ non-standard_inline() }}</dt>
<dd>For frames hosting an <a href="/en/Apps" title="https://developer.mozilla.org/en/OpenWebApps">open web app</a>, this specifies the URL of the <a href="/en/Apps/Manifest" title="https://developer.mozilla.org/en/Apps/Manifest">app manifest</a>. This ensures that the app is loaded with the right permissions. See <a href="/en/DOM/Using_the_Browser_API" title="https://developer.mozilla.org/en/DOM/Using_the_Browser_API">Using the Browser API</a> for details. Available in Gecko 13.0 and later.</dd>
<dt>{{ htmlattrdef("remote") }} {{ non-standard_inline() }}</dt>
<dd>Load the frame's page in a separate content process.</dd>
</dl>
<h2 id="Secuencia_de_comandos">Secuencia de comandos</h2>
<p>Inline frames, like {{HTMLElement("frame")}} elements, are included in the {{domxref("window.frames")}} pseudo-array.</p>
<p>With the DOM {{domxref("HTMLIFrameElement")}} object, scripts can access the {{domxref("window")}} object of the framed resource via the {{domxref("HTMLIFrameElement.contentWindow", "contentWindow")}} property. The {{domxref("HTMLIFrameElement.contentDocument", "contentDocument")}} property refers to the <code>document</code> inside the <code><iframe></code>, same as <code>contentWindow.document</code>.</p>
<p>From the inside of a frame, a script can get a reference to its parent window with {{domxref("window.parent")}}.</p>
<p>Script access to a frame's content is subject to the {{Glossary("same-origin policy")}}. Scripts cannot access most properties in other <code>window</code> objects if the script was loaded from a different origin, including scripts inside a frame accessing the frame's parent. Cross-origin communication can be achieved using {{domxref("Window.postMessage()")}}.</p>
<h2 id="Ejemplos">Ejemplos</h2>
<h3 id="Example1" name="Example1">Un <iframe> simple</h3>
<p>Un <code><iframe></code> en acción. Después de crear el marco, cuando el usuario hace clic en un botón, su título se muestra en una alerta.</p>
<h4 id="HTML">HTML</h4>
<pre><code><iframe src="https://mdn-samples.mozilla.org/snippets/html/iframe-simple-contents.html" title="iframe Example 1" width="400" height="300">
<p>Your browser does not support iframes.</p>
</iframe></code></pre>
<h4 id="Resultado">Resultado</h4>
<p>{{ EmbedLiveSample('Example1', 640,400)}}</p>
<h3 id="Example2" name="Example2">Abrir un enlace en un <iframe> en otra pestaña</h3>
<p>En este ejemplo, se muestra un mapa de Google en un marco.</p>
<h4 id="HTML_2">HTML</h4>
<pre><code><iframe id="Example2"
title="iframe Example 2"
width="400" height="300"
style="border:none"
src="https://maps.google.com/maps?f=q&source=s_q&q=buenos+aires&sll=37.0625,-95.677068&sspn=38.638819,80.859375&t=h&hnear=Buenos+Aires,+Argentina&z=11&ll=-34.603723,-58.381593&output=embed">
</iframe></code></pre>
<h4 id="Resultado_2">Resultado</h4>
<p>{{ EmbedLiveSample('Example2', 640, 400)}}</p>
<h2 id="Especificaciones">Especificaciones</h2>
<table>
<thead>
<tr>
<th scope="col">Specification</th>
<th scope="col">Status</th>
<th scope="col">Comment</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('Referrer Policy', '#referrer-policy-delivery-referrer-attribute', 'referrerpolicy attribute')}}</td>
<td>{{Spec2('Referrer Policy')}}</td>
<td>Added the <code>referrerpolicy</code> attribute.</td>
</tr>
<tr>
<td>{{SpecName('HTML WHATWG', 'iframe-embed-object.html#the-iframe-element', '<iframe>')}}</td>
<td>{{Spec2('HTML WHATWG')}}</td>
<td></td>
</tr>
<tr>
<td>{{SpecName('HTML5 W3C', 'embedded-content-0.html#the-iframe-element', '<iframe>')}}</td>
<td>{{Spec2('HTML5 W3C')}}</td>
<td></td>
</tr>
<tr>
<td>{{SpecName('HTML4.01', 'present/frames.html#h-16.5', '<iframe>')}}</td>
<td>{{Spec2('HTML4.01')}}</td>
<td></td>
</tr>
<tr>
<td>{{SpecName('Screen Orientation')}}</td>
<td>{{Spec2('Screen Orientation')}}</td>
<td>Adds <code>allow-orientation-lock</code> to the <code>sandbox</code> attribute.</td>
</tr>
<tr>
<td>{{SpecName('Presentation','#sandboxing-and-the-allow-presentation-keyword','allow-presentation')}}</td>
<td>{{Spec2('Presentation')}}</td>
<td>Adds <code>allow-presentation</code> to the <code>sandbox</code> attribute</td>
</tr>
</tbody>
</table>
<h2 id="Notes">Notes</h2>
<div class="geckoVersionNote">
<p>{{ gecko_callout_heading("6.0") }}</p>
<p>Starting in Gecko 6.0 {{ geckoRelease("6.0") }}, rendering of inline frames correctly respects the borders of their containing element when they're rounded using {{ cssxref("border-radius") }}.</p>
</div>
<h2 id="Browser_compatibility">Browser compatibility</h2>
<p>{{Compat("html.elements.iframe", 3)}}</p>
|