Changer le contenu d'une balise object...

  • Auteur de la discussion Savancosinus
  • Date de début

Savancosinus

Nouveau membre
Salut !

Pourriez-vous me faire savoir comment changer le contenu d'une balise object ?

Ca pourrait etre quelque chose comme ca (mais cette formulation ne fonctionne pas) :

<object
id="tarmac"
data="Site/bvwb.gif"
>
</object>

<a
onclick="document.getElementById('tarmac').location='Site/h1.php'"
>
changer

Merci de votre aide !
 

KangOl

Grand Maître
document.getElementById('tarmac').data='Site/h1.php

??
 

winnet

Nouveau membre
Si tu veux charger une nouvelle url:
[cpp]
function loadURL(url) {
//recupère l'objet à modifier
var actu = document.getElementById("contenuActu");
replaceObject(actu,url);
}
[/cpp]


Si tu veux changer le contenu d'un objet par un autre objet:

[cpp]
function replaceObject() {
//recupère l'objet à modifier
var object = document.getElementById("contenu");

// remplace le contenu de l'object --> nObject est l'objet qui remplace le contenu de ton objet conteneur
object.replaceChild(nObject,object.firstChild);
}[/cpp]
 

Bentheouf

Nouveau membre
Bonjour
j'ai le meme probleme

Le script donné ne marche pas ou je ne l'utilise peut-etre pas correctement...

[cpp]function loadURL(url) {
//recupère l'objet à modifier
alert("changemen : " +url);
var actu = document.getElementById("corps_contenu");
alert(actu.data);
replaceObject(actu,url);
alert(actu.data);

}[/cpp]

IE me met une erreur a la ligne du replaceObject

japele la fonction comme ceci : [cpp]<a onclick="javascript:loadURL('contenu/fichier.html')"> Accueil</a>[/cpp]

la balise object est la suivante : [cpp]<object id="corps_contenu" class="contenu" data="contenu/bienvenu.html" type="text/html" /> [/cpp]

sur le premier alert j'ai bien 'contenu/fichier.html'

le deuxieme j'ai bien contenu/bienvenu.html

& la paf IE me met une erreur "objet attendu"

Merci de m'aider ;-)



 

ASM30

Nouveau membre
si toutefois c'était encore d'actualité ...

voici la fonction javascript revue :

[fixed]function loadURL(url,objet) {
//recupère l'objet à modifier
var actu = document.getElementById(objet);
// creé le nouvel objet de remplacement
var nouvo = document.createElement('OBJECT');
nouvo.id = "provisoire";
nouvo.className = "contenu";
nouvo.data = url;
nouvo.type = "text/html"
// échange des 2 objets
actu.parentNode.replaceChild(nouvo,actu);
// donner l'id correct au nouvel objet
document.getElementById("provisoire").id = objet;
}[/fixed]

voici le code html de l'object
attention, pour faciliter son remplacement il est disposé dans un div
(ce div peut tout aussi bien n'être que le body)

[fixed]<div>
<object id="corps_contenu" class="contenu" data="contenu/bienvenu.html" type="text/html"></object>
</div>[/fixed]

voici l'appel (dans un lien) du nouveau fichier à insérer :

[fixed] <a onclick="javascript:loadURL('contenu/fichier.html','corps_contenu')"> Accueil</a>[/fixed]


 

ASM30

Nouveau membre
Ha! Oui!

J'oubliais .... !

Il y a d'autres méthodes pour charger une page (ou un fichier)
dans une autre, et sans recharger la page principale ni se servir d'un "object"
c'est le XMLHttpRequest

petit exposé ici :


où on devrait pouvoir tester avec et sans JavaScript activé
En effet, il est prévu que çà fonctionne (moins bien puisque recharge toute la page) sans le javascript mais grâce aux SSI, normalement disponibles sur tout serveur.

 

Naja4

Nouveau membre
J'ai plus simple pour gérer ceci

Fonction javascript
[fixed]function chargeURL(url,objet) {
ancien=document.getElementById(objet);

// Cloner l'ancien objet
nouveau=ancien.cloneNode(true);
// Modifier le champ à modifier
nouveau.data=url;
// Remplacer l'ancien objet par le nouvel objet
ancien.parentNode.replaceChild(nouveau,ancien);
}[/fixed]

La définition de l'objet contenu dans le corps du fichier HTML
[fixed]<object id="corps_contenu" data="contenus/bienvenue.html" type="text/html"></object>[/fixed]

Le changement de l'objet
[fixed]<a href="javascript:chargeURL('contenus/fichier.html','corps_contenu')"> Fichier</a>[/fixed]
 

Bratovitch

Nouveau membre
Merci beaucoup Naja, c'est la solution que je cherchait !

malheureusement pour moi, peut-être parceque l'object est contenu dans une div, cela ne marche pas du tout sous ie (l'interprétation de la page s'arrête à la balise object, j'ai son contour et plus rien...).

N'y aurait-il pas moyen d'envoyer le contenu directement dans la div (sans la balise object donc...) ?

J'ai trouvé un bout de js qui pourrait peut-etre solutionner ceci si innerHTML = Content pouvait me récupérer le contenu de ma page distante :

[cpp]
var ns4 = (document.layers)? true:false; //NS 4
var ie4 = (document.all)? true:false; //IE 4
var dom = (document.getElementById)? true:false; //NS 6 ou IE 5

function SetDiv(ID,Content) {
if (dom) {
document.getElementById(ID).innerHTML = Content;
return;
}
if (ie4) {
document.all[ID].innerHTML = Content;
return;
}
if (ns4) {
with (eval('document.'+ID+'.document')) {
open();
write(Content);
close();
}
return;
}
}
[/cpp]

je suis en train de devenir maboule et je ne voit plus les évidences... il me faudrait avoir comme paramètre 'content' le chemin du fichier distant, mais ajouter dans le script une fonction pour en récupérer le contenu avant de faire innerHTML = Content

un petit coup de pouce d'un pro de js ?
 

Bratovitch

Nouveau membre
si quelqu'un peut me donner un petit coup de pouce...
j'aimerai ne pas avoir à revenir aux iframe... avec tous les hacks que cela inclu et la redéfinition de ma page en html 4.1 au lieu de xhtml...
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 054
Membres
1 586 393
Dernier membre
mathhh28
Partager cette page
Haut