2009-11-12 5 views
1

J'ai un contrôle personnalisé constitué d'un champ de texte et de l'extension ajax toolkit dateextender. Dans IE6, je tape sur le bogue z-index où le calendrier est affiché derrière des boîtes de sélection.Pourquoi un shim iframe créé de manière non dynamique s'affiche-t-il, mais pas un shim créé dynamiquement?

Si j'ai la cale assise dans le contrôle, initialement masquée, elle semble bien s'afficher lorsque le calendrier est affiché, mais lorsque j'essaie de créer dynamiquement la cale en montrant qu'elle n'apparaît pas.

J'ai essayé bgiframe et quelques exemples que j'ai trouvés sur SO, pas de chance.

Voici mon code javascript actuellement ...

var dateEditorShim; 

function dateEditor_OnShown(dateControl, emptyEventArgs) { 
    var shimWidth = dateControl._width; 
    var shimHeight = dateControl._height; 

    //var dateEditorShim; 
    //dateEditorShim = document.getElementById(dateEditorShimId); 

    dateEditorShim = document.createElement('iframe'); 
    dateEditorShim.setAttribute('src', 'javascript:"";'); 
    dateEditorShim.setAttribute('frameBorder', '0'); 

    dateEditorShim.style.width = dateControl._popupDiv.offsetWidth; 
    dateEditorShim.style.height = dateControl._popupDiv.offsetHeight; 
    dateEditorShim.style.top = dateControl._popupDiv.style.top; 
    dateEditorShim.style.left = dateControl._popupDiv.style.left; 
    dateControl._popupDiv.style.zIndex = 999; 
    dateEditorShim.style.zIndex = 998; 
    dateEditorShim.style.display = "block"; 

} 


function dateEditor_OnHiding(dateControl, emptyEventArgs) { 
    var shimWidth = 0; 
    var shimHeight = 0; 

    //var dateEditorShim; 
    //dateEditorShim = document.getElementById(dateEditorShimId); 
    dateEditorShim.style.width = 0; 
    dateEditorShim.style.height = 0; 
    dateEditorShim.style.top = 0; 
    dateEditorShim.style.left = 0; 
    dateEditorShim.style.display = "none"; 
} 

Vous remarquerez que j'ai un peu commenté de code qui obtient un iframe qui est intégré dans la page, comme je l'ai dit, dans ce cas le iframe au moins apparaît, mais quand je le crée dynamiquement comme le code ci-dessus actuellement, il ne le fait pas. J'essaie de comprendre pourquoi.

Des idées?

Répondre

1

Eh bien, je l'ai compris. J'ai simplement besoin d'ajouter l'élément à quelque chose. Donc ...

dateControl._container.appendChild(dateEditorShim); 

L'astuce.

Questions connexes