2010-09-17 5 views
0

J'ai un morceau de JavaScript qui insère/supprime un iframe du DOM. Tout est dandy dans Chrome et FireFox mais l'iframe n'est pas affiché dans IE. Le code ci-dessous est la création et l'insertion. Lors de l'inspection avec un outil de développement, je peux voir que l'iframe fait partie du DOM exactement comme je l'attendais. Toute suggestion sur ce qui pourrait le faire ne pas être affiché?DHTML, iFrame et IE

function getiFrame(target) { 
    var frame = document.getElementById(target); 
    if (null == frame) { 
     frame = document.createElement("iframe"); 
     frame.setAttribute("width", "100%"); 
     frame.setAttribute("height", "1000px"); 
     //frame.setAttribute("frameborder", "0"); 
     frame.setAttribute("id", target); 
     frame.setAttribute("name", target); 
     frame.setAttribute("src", "http://dmi.dk"); 
    } else { 
     frame.src = "http://dmi.dk"; 
     frame.style.visibility = "visible"; 
    } 

    return frame; 
} 

var frame = getiFrame(target); 
var row = document.getElementById(contentRowId); 
for (var i = 0; row.childNodes.length > 0; i++) { 
     row.removeChild(row.childNodes[0]); 
} 

row.appendChild(frame); 

EDIT: Pour clarifier j'ai tryed Définition des attributs directement (comme suggéré par Tim bas) ce qui précède est le résultat de mes tentatives désespérées.

De plus lors de l'inspection DOM-je obtenir une balise iframe parfaitement valide:

<iframe propdescname="full" width="100%" height="1000" id="full" src="http://dmi.dk"> 

et d'inspection qui montre aussi qu'il est lu et analysé le src (http://dmi.dk) correctement. Je peux aussi inspecter le DOM de ce site.

Alors, ce qui m'intrigue c'est que tout semble fonctionner. Ce qui pourrait l'empêcher d'être affiché.

Répondre

0

Jim Coplien se réfère à cela comme le motif Canard en caoutchouc. "Vous ne pouvez pas demander à xx avant d'avoir consulté le canard en caoutchouc". Qui n'a pas résolu sa propre question en demandant conseil à quelqu'un? J'étais en train d'éditer mon article en écrivant que l'iframe était dans un td et j'en suis venu à penser que je ne m'étais pas assuré qu'il l'était réellement. Le problème s'est avéré être moi en supprimant le td et en insérant le iframe dans le TR que IE traite accessoirement différemment lorsqu'il est fait dynamiquement que lorsqu'il est fait de façon statique.

Merci d'avoir écouté en jouant le rôle de « le canard en caoutchouc »

1

Il y a un problème évident:

frame = document.createElement("div"); 

devrait être

frame = document.createElement("iframe"); 

En outre, setAttribute est inutile, bavard et sujette à erreur dans IE. Utilisez les propriétés DOM à la place:

frame.width = "100%"; 
frame.height = 1000; 
//frame.frameBorder = 0; 
frame.id = target; 
frame.name = target; 
frame.src = "http://vrk.dk"; 
+0

ma faute de frappe la div/iframe ne fait pas de différence. J'ai mis à jour la question pour être plus clair. Merci de l'avoir signalé –