2009-10-04 13 views
8

Estoy tratando de insertar un iframe en el navegador DOM a través de javascript y quiero eliminar el borde si IE no lo puedo hacer. He tratado de éstos fue en vano:Cómo eliminar el borde del iframe en IE usando javascript

iframeElement.style.borderStyle="none"; 

y

iframeElement.style.frameBorder = "0"; 

Cualquier sugerencia será muy apreciada.

+0

+1, tenían el mismo problema, La respuesta de Tim fue perfecta. Por cierto, el título necesita una edición: jav * s * ascript. Lo haría si pudiera. – Pedro

+0

[Esta] [1] parece funcionar para IE8, (IE es un dolor tal !!) [1]: http://stackoverflow.com/questions/12414525/how-to-get- librar-de-borde-por-un-iframe-en-ie8 –

Respuesta

0

Pruebe iframeElement.style.borderCollapse = 1; o iframeElement.style.borderWidth = 0;

+0

No funcionan tanto en IE8 como en IE7. –

5

El atributo frameBorder existe directamente en el elemento iframe, no es una propiedad de CSS.

intento con:

iframeElement.frameBorder = 0; 
+0

Gah, he votado a favor de esto, investigué un poco más y me di cuenta de que esta respuesta no es del todo incorrecta (ver mi respuesta para aclarar) pero aparentemente no puedo eliminar mi voto a menos que se edite esta respuesta. Lo siento. –

+0

@Tim: no se preocupe, editado en caso de que quiera eliminar su voto negativo, agregué un enlace al atributo frameBorder en la especificación DOM Core Nivel 2 ... – CMS

+0

@CMS: listo, gracias. –

15

Curiosamente, yo estaba buscando una respuesta a esto mismo muy emitir el día de hoy. Encontré que establecer la propiedad frameBorder en 0 funciona, siempre que lo haga antes de agregar el iframe al documento.

var iframe = document.createElement("iframe"); 
iframe.frameBorder = 0; 
document.body.appendChild(iframe); 
+0

+1 muy interesante. IE8 todavía tiene el mismo problema, ¿puedes creerlo? Agregar frameBorder en línea hace que el documento no valide más para HTML 5, por lo que el único trcik es agregarlo a través de JS como usted sugiere. –

+0

+1 lo mismo aquí, lo del pedido fue un gran problema. – Pedro

2

Pruebe esto. Encontrará todos los elementos del iframe y eliminará sus bordes en IE y otros navegadores (aunque solo puede establecer un estilo CSS de "border: none;" en navegadores que no sean IE, en lugar de usar JavaScript). Y funcionará incluso si se utiliza DESPUÉS de que el iframe se haya generado y esté en su lugar en el documento (por ejemplo, iframes que se agregan en HTML simple y no en JavaScript).

Esto parece funcionar porque IE crea el borde, no en el elemento iframe como es de esperar, sino en el CONTENIDO del iframe, después de que se crea el iframe en la lista de materiales. ($ @ & * # @ !!! IE !!!)

Nota: La parte IE solo funcionará (por supuesto) si la ventana padre y el iframe son del MISMO origen (mismo dominio, puerto, protocolo, etc. .). De lo contrario, el script obtendrá errores de "acceso denegado" en la consola de errores de IE. Si eso sucede, su única opción es configurarlo antes de que se genere, como otros han notado, o usar el atributo frameBorder no estándar = "0". (O simplemente dejar que IE mirar fugly - mi opción favorita actual;))

me llevó muchas horas de trabajo al punto de la desesperación de resolver esto ...

disfrutar. :)

// ========================================================================= 
// Remove borders on iFrames 

if (window.document.getElementsByTagName("iframe")) 
    { 
     var iFrameElements = window.document.getElementsByTagName("iframe"); 
     for (var i = 0; i < iFrameElements.length; i++) 
     { 
      iFrameElements[i].frameBorder="0"; // For other browsers. 
      iFrameElements[i].setAttribute("frameBorder", "0"); // For other browsers (just a backup for the above). 
      iFrameElements[i].contentWindow.document.body.style.border="none"; // For IE. 
     } 
    } 
0

También debe ser capaz de utilizar los comentarios condicionales '' en el código HTML con el fin de incluir el 'frameborder' atribuir sólo en IE8:

<!--[if IE 8]> 
<iframe id="my-iframe" frameborder="0"></iframe> 
<![endif--> 
<!--[if gt IE 8]><!--> 
<iframe id="my-iframe"></iframe> 
<!--<![endif]--> 
Cuestiones relacionadas