11548 sujets

JavaScript, DOM et API Web HTML5

Hello,
j'ai trouvé ici même une solution intéressante pour insérer une page HTML dans une autre en évitant les iframe, grâce à la balise object. Je cherche à adapter cette solution afin d'insérer dynamiquement (via JS) du contenu HTML dans une balise object, le but de cette opération étant d'avoir un contenu inséré localisé (donc l'url de la page à insérer peut varier).

Dans ma page principale j'ai :

<object id="test" type="text/html" data=""/>


Dans ma css :

#test {	
	text-align:center;
	width:730px;
	height:1000px;		
	display:none;
}


et enfin dans mon fichier js:


function affichePage(psUrl) {				
document.getElementById( "test" ).style.display = "block";			
document.getElementById( "test" ).data = psUrl;		
}


Quand j'appelle ma fonction javascript affichePage() en lui passant l'url en paramètre, ça marche impec dans Firefox, mais sur IE ça ne m'affiche rien, le cadre de 730x1000 apparaît bien, mais avec une croix rouge "lien cassé" (pourtant l'url est bonne pas de doute là-dessus) ! Je pense que IE ne rafraîchit pas l'affichage de la balise object avec la nouvelle valeur de l'attribut data... Smiley decu
Pourquoi donc ? J'ai oublié un truc? Comment faire marcher ce script partout ?

Merci pour votre aide!
Modifié par Lenni (10 Apr 2008 - 11:40)
serieusement, c'est très bien de vouloir se porter aux standard. Mais tant qu'il existera des navigateurs de merde on sera obligé de passer outre.
Donc je te conseil fortement l'iframe qui est largement meilleur moyen d'intégrer une page dans une autre.
Gatsu35 a écrit :
serieusement, c'est très bien de vouloir se porter aux standard. Mais tant qu'il existera des navigateurs de merde on sera obligé de passer outre.
Donc je te conseil fortement l'iframe qui est largement meilleur moyen d'intégrer une page dans une autre.

iframe est un élément standard, si l'on choisit le bon doctype... La solution object n'est pas suffisamment bien supportée pour être acceptable. Elle n'apporte de toute façon à ma connaissance rien par rapport à iframe, si ce n'est une façon plus efficace de spécifier du contenu alternatif.

P.S. : en ce qui concerne i18n, il existe des solutions bien plus robustes et accessibles qu'une bidouille en JS.
Modifié par Julien Royer (11 Apr 2008 - 00:01)
Salut,

merci pour ces réponses, j'espérais qu'il y aurait une astuce pour faire fonctionner mon truc sur IE mais effectivement il semble qu'il n'y ait rien d'autre à faire que de revenir à une bonne vieille iframe... Smiley ohwell

J'ai pourtant tenté plein de solutions mais aucune ne fonctionne correctement (j'ai aussi essayé AJAX avec xmlhttprequest mais malheureusement la page html à charger est dans un sous-domaine différent de celui de la page principale donc ça marche pas...)

Enfin c'est toujours bon à expérimenter, qui sait peut-être qu'un jour ce genre de script pourra réellement marcher avec IE... en 2023 sous IE 15.0 par exemple... Smiley lol