34 votes

IE 8 frontière iframe

Il y a une bordure sur un iframe et je ne peux pas m'en débarrasser.

IE 6 et 7 fonctionnent comme prévu avec un peu de JavaScript:

 function test(){
    var iframe = document.getElementById('frame2');
    iframe.contentWindow.document.body.style.backgroundColor = "#a31d1d";
    iframe.contentWindow.document.body.style.border = "#a31d1d";
    iframe.contentWindow.document.body.style.outlineColor = "#a31d1d";
}
 

Mais la frontière reste visible dans IE 8.

94voto

Assaf Feldman Points 851

Ajoutez les attributs suivants à la balise iframe:

 marginheight="0" marginwidth="0" frameborder="0"
 

17voto

MK. Points 3163

J'ai eu le même problème avec les iframes créés dynamiquement, et il s'est avéré que la définition des propriétés de la bordure APRÈS l' ajout de l'iframe au document n'a AUCUN effet:

Le code suivant montre une bordure 3d:

 var iframe = document.createElement("IFRAME");
iframe.src = "http:www.stackoverflow.com";
//Iframe added BEFORE setting border properties.
document.body.appendChild(iframe);
iframe.frameBorder = "no";
 

Mais cela le supprime réellement:

 var iframe = document.createElement("IFRAME");
iframe.src = "http:www.stackoverflow.com";
iframe.frameBorder = "no";
//Iframe added AFTER setting border properties.
document.body.appendChild(iframe);
 

J'espère que cela vous aidera à résoudre votre problème.

1voto

Rachel Points 11

J'ai essayé beaucoup de variations sur cette idée et j'ai fini par utiliser quelque chose dans ce sens. Je pensais le partager.

 <script type="text/javascript">
   url = 'http://www.dollypower.com';
   title = 'Dolly Power';
   width = '660';
   height = '430';
    document.write('<iframe src='+url+' title='+title+' width='+width+' height='+height+' frameborder=0></iframe>');
 </script>
 

Ensuite, j'ai utilisé des balises noscript pour entrer une alternative pour les utilisateurs non-JS, à savoir:

 <noscript><p><a href="http://www.dollypower.com" target="_blank">Please click here for Dolly Power</a></p></noscript>
 

Je l'ai testé dans IE8 et c'est tout cool pour moi et cela valide également.

J'espère que cela pourrait aider quelqu'un là-bas!

1voto

J118 Points 116

Succès!

Essayez ceci. Tous les éléments iframe et de retirer leurs frontières dans IE et d'autres navigateurs (bien que vous pouvez simplement définir un style "border : none;" non-IE navigateurs au lieu de l'utilisation de JavaScript). ET il fonctionnera même si utilisé APRÈS l'iframe est généré et mis en place dans le document (par exemple, les iframes sont ajoutés en HTML et pas en JavaScript)!

Cela semble fonctionner car IE crée la frontière, non pas sur l'élément iframe que vous vous attendez, mais sur le CONTENU de l'iframe, après l'iframe est créé dans la NOMENCLATURE. ($@&*#@!!! IE!!!)

Remarque: La IE partie seulement de travail (bien sûr) si la fenêtre parent et iframe sont de la MÊME origine (même domaine, port, protocole, etc.). Sinon, le script "accès refusé" erreurs dans le IE console d'erreur. Si cela se produit, votre seule option est de mettre en avant qu'il est généré, comme d'autres l'ont noté, ou de l'utilisation de la non-standard frameBorder="0" attribut. (ou tout simplement laisser IE look moche--mon option préférée ;) )

M'a fallu de NOMBREUSES heures de travail, au point de désespérer de trouver cela...

Profitez de. :)

// =========================================================================
// 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.
         }
   }

0voto

Un exemple de HTML pour aller avec l'exemple de JS serait utile =)

Essayez d’utiliser les outils de développement d’IE8 (appuyez sur la touche F12 de la page qui vous pose problème) pour isoler les styles appliqués à l’iframe. Vous pouvez également jouer avec les styles là-bas, pour réduire votre temps d'itération.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X