Internet Explorer et object [Résolu]

Signaler
Messages postés
38
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
15 janvier 2009
-
Messages postés
38
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
15 janvier 2009
-
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

Messages postés
38
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
15 janvier 2009

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+
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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]
Messages postés
38
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
15 janvier 2009

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é ;)
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
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 !
Messages postés
38
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
15 janvier 2009

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 ? ;)
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
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 !
Messages postés
38
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
15 janvier 2009

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... ;)
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
zone.src = content;

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
38
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
15 janvier 2009

Heu ... non ;)
Toujours la sempiternel zone vide :(