Internet Explorer et object

Résolu
bond_never_die Messages postés 38 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 15 janvier 2009 - 2 août 2008 à 17:20
bond_never_die Messages postés 38 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 15 janvier 2009 - 2 août 2008 à 22:02
Bonjour à tous.
Voilà, j'ai un petit script qui permet d'afficher dynamiquement une zone d'affichage au dessus de ma page. Problème : sous Internet Explorer la zone s'affiche bien mais celle-ci reste vide... Ceci fonctionne pourtant parfaitement sous Opera et sous Firefox.

Voici mon script :

function dispZone(content,w,h) {
var x=GetDomOffset(document.getElementById('actus'), 'offsetTop') ;
var y=GetDomOffset(document.getElementById('actus'), 'offsetLeft') ;
var zone = document.createElement('object');
zone.type='text/html';
zone.data=content;
zone.width=(w)+'px';
zone.height=(h)+'px';
zone.style.overflow='auto';
zone.style.display='block';
zone.style.position='absolute';
zone.style.padding='1px';
zone.style.border='1px solid #000000';
zone.style.backgroundColor="#FFFFFF";
zone.style.color="#000000";
zone.style.left= (y)+"px";
zone.style.top=(x)+"px";
document.getElementById('content').appendChild(zone);
zone.onmouseout=function() {document.getElementById('content').removeChild (zone);}
}

Et la page sur laquelle je l'utilise (vous pourrez vérifier que je ne dis pas de bêtises :-) ):
http://595flf.free.fr/v2/index.php?page=about

9 réponses

bond_never_die Messages postés 38 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 15 janvier 2009
2 août 2008 à 22:02
Bon j'ai fini par trouver une solution qui, bien que complétement naze, fonctionne quand même :

function dispZone(content,w,h) {
if (navigator.appName.indexOf("Internet Explorer") != -1) {
var x=GetDomOffset(document.getElementById('actus'), 'offsetTop')+'px';
var y=GetDomOffset(document.getElementById('actus'), 'offsetLeft')+'px';
var zone = document.createElement('iframe');
zone.type='text/html';
zone.src=content;
zone.style.width=w+'px';
zone.style.height=h+'px';
zone.style.overflow='auto';
zone.style.display='block';
zone.style.position='absolute';
zone.style.padding='1px';
zone.style.border='1px solid #000000';
zone.style.backgroundColor="#FFFFFF";
zone.style.color="#000000";
zone.style.left= y;
zone.style.top=x;
document.body.appendChild(zone);
zone.onmouseout=function() {document.body.removeChild (zone);}
}
else {
var x=GetDomOffset(document.getElementById('actus'), 'offsetTop')+'px';
var y=GetDomOffset(document.getElementById('actus'), 'offsetLeft')+'px';
var zone = document.createElement('object');
zone.type='text/html';
zone.data=content;
zone.style.width=w+'px';
zone.style.height=h+'px';
zone.style.overflow='auto';
zone.style.display='block';
zone.style.position='absolute';
zone.style.padding='1px';
zone.style.border='1px solid #000000';
zone.style.backgroundColor="#FFFFFF";
zone.style.color="#000000";
zone.style.left= y;
zone.style.top=x;
document.body.appendChild(zone);
zone.onmouseout=function() {document.body.removeChild (zone);}
}
}

En gros je test si le navigateur est IE, je crée une iframe, sinon un object. Cette solution me dérange dans la mesure où iframe n'existe pas en xhtml 1.0 strict mais bon, au moins elle fonctionne...
Merci quand même d'avoir essayé de m'aider.
A+
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 août 2008 à 18:27
Bonjour,
t'es sûr ?

function dispZone(content,w,h) {

...
document.getElementById('content').appendChild(zone);

tu inséres donc dans un élément qui a pour id content
et non pas le contenu de la variable content !

et l'object que tu crée n'est rempli par rien,
c'est donc vide

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
bond_never_die Messages postés 38 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 15 janvier 2009
2 août 2008 à 18:33
Tout d'abord merci pour ta réponse.

Toutefois, celà n'a aucun rapport... Le "content" de

document.getElementById('content').appendChild(zone);

correspond bien à un élément dont l'id est "content", en l'occurence :




Je pourrais à la limite remplacer cette ligne par

document.body.appendChild(zone);

Donc le problème ne viens pas de là, désolé ;)
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
2 août 2008 à 19:28
Salut,

function dispZone(content,w,h) {
var x=GetDomOffset(document.getElementById('actus'), 'offsetTop') ;
var y=GetDomOffset(document.getElementById('actus'), 'offsetLeft') ;
var zone = document.createElement('object');
zone.setAttribute('type','text/html');
zone.data=content;
zone.style.width=w+'px';
zone.style.height=h+'px';
zone.style.overflow='auto';
zone.style.display='block';
zone.style.position='absolute';
zone.style.padding='1px';
zone.style.border='1px solid #000000';
zone.style.backgroundColor="#FFFFFF";
zone.style.color="#000000";
zone.style.left= y+"px";
zone.style.top=x+"px";
document.getElementById('content').appendChild(zone);
zone.onmouseout=function() {document.getElementById('content').removeChild (zone);}
}

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bond_never_die Messages postés 38 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 15 janvier 2009
2 août 2008 à 19:34
Vouis :)
Merci pour ta réponse mais ça ne change rien...
Internet Explorer affiche toujours un cadre désespèrement vide :(
Une autre idée ? ;)
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
2 août 2008 à 19:54
var x=GetDomOffset(document.getElementById('actus'), 'offsetTop')+'px' ;
var y=GetDomOffset(document.getElementById('actus'), 'offsetLeft')+'px' ;

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
bond_never_die Messages postés 38 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 15 janvier 2009
2 août 2008 à 20:10
Niet, ça ne change rien au problème...
Mais le souci ne serait-il pas du coté de

zone.data=content;

qui ne serait par compris par internet explorer ? Parce que comme je le disais plus haut, tout fonctionne parfaitement avec Firefox ou Opera... Autre détail : je viens de tester sous IE 8 beta, et ... le contenu s'affiche ! Bon il ya certes de gros problèmes de placement mais innérants, je pense, au fait qu'il s'agit d'une version bêta.
Mais si celà viens bien de là (data non compris par IE7 et inférieurs), je ne vois pas comment forcer IE à comprendre qu'il doit aller chercher le contenu à afficher à cet endroit... J'ai essayé de rajouter un

zone.setAttribute('src',content);

mais sans succès :(
Voilà, si quelqu'un à une idée pour résoudre le problème... ;)
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
2 août 2008 à 20:13
zone.src = content;

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
bond_never_die Messages postés 38 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 15 janvier 2009
2 août 2008 à 20:21
Heu ... non ;)
Toujours la sempiternel zone vide :(
0
Rejoignez-nous