2010-08-04 5 views
0

Dans une page, il y a un contrôle ActiveX ainsi qu'un bouton dont onclick ouvre un popup ajax modal. Le problème auquel je suis confronté est que chaque fois que le bouton est cliqué, la pop-up ajax se charge derrière le contrôle ActiveX et donc il est caché. Donc je ne suis pas capable d'utiliser ce contrôle du tout. Je n'ai pas trouvé de solution appropriée à cela. J'ai essayé une solution où une condition de vérification du navigateur a été supprimée du code ajaxtoolkit. mais pas de chance. Suis en utilisant Ajax toolkit version 3.0.30512.1.let moi savoir s'il existe des solutions pour résoudre ce problème.Popup modal Ajax chargé derrière le contrôle ActiveX

Répondre

0

Je n'ai aucune expérience d'ActiveX, mais cela pourrait être un simple problème de positionnement CSS Z-Index. Avez-vous veillé à ce que l'index Z de votre contrôle soit inférieur à celui de la fenêtre contextuelle modale?

http://www.w3schools.com/css/pr_pos_z-index.asp

+0

J'ai essayé l'option d'index Z mais sans succès. – Aravind

0

Je ne suis pas sûr, mais je pense que le problème est le ActiveX, qui est toujours affiché le plus haut.

Vous pouvez essayer de cacher l'ActiveX lors de l'affichage le menu contextuel:

document.getElementById('activex').style.visibility = 'hidden'; 

puis lorsque vous fermez la fenêtre contextuelle réafficher l'ActiveX:

document.getElementById('activex').style.visibility = 'visible'; 
+0

laissez-moi essayer cette option – Aravind

+0

Si cela ne fonctionne pas, essayez de définir la largeur et la hauteur à 1; certains contrôles ActiveX peuvent se comporter étrangement si vous les rendez réellement invisibles car le navigateur peut désactiver le contrôle. La réponse de Lenciel est absolument ce qui se passe ici - je n'aurais pas pu mieux l'expliquer moi-même. – taxilian

+0

il ya longtemps que j'ai posté cette question et a été surpris de voir un commentaire maintenant. :) En fait, nous avons légèrement modifié le flux de la page pour que ActiveX devienne le seul contrôle sur la page. À ce moment-là, c'était une solution rapide pour obtenir le site. – Aravind

1

Tout effort pour apporter un DIV ou tout L'élément HTML au-dessus d'un ActiveX n'a ​​aucun effet. Un ActiveX reste toujours au top même s'il a un index z plus élevé qu'un élément HTML. La raison en est la façon dont l'Explorateur rend son contenu. Voir

http://support.microsoft.com/default.aspx?scid=kb;en-us;177378.

Il existe deux types de contrôles: les éléments fenêtrés et sans fenêtre, et ils sont rendus sur des plans distincts. Tous les éléments fenêtrés se peignent sur tous les éléments sans fenêtre, malgré les souhaits de leur conteneur. Cependant, les éléments fenêtrés suivent l'attribut z-index l'un par rapport à l'autre, tout comme les éléments sans fenêtre suivent l'attribut z-index l'un par rapport à l'autre.

Tous les éléments sans fenêtre sont rendus sur le même plan MSHTML et les éléments fenêtrés sont dessinés sur un plan MSHTML distinct. Vous pouvez utiliser z-index pour manipuler des éléments sur le même plan, mais ne pas mélanger et faire correspondre avec des éléments dans différents plans. Vous pouvez réorganiser l'indexation z des éléments sur chaque plan, mais le plan fenêtré dessine toujours sur le sommet du plan sans fenêtre.

La balise est, dans la plupart des cas, fenêtrée. C'est pourquoi il reste toujours au top.

+0

Cette réponse est absolument correcte; FireBreath prend en charge la création de contrôles ActiveX sans fenêtre, mais c'est un problème et la plupart des contrôles ne le supportent pas car le contrôle n'a pas son propre HWND. – taxilian

Questions connexes