Eléphanteau du PHP |
13 Messages
12 mars 2005, 16:01
Je n'ai pas du tout étudier le fonctionnement d'XmlHttpRequest, mais par contre, j'ai des fonctions qui peuvent peut-etre faire l'affaire.
La première est pour changer la source d'un objet (iframe, image ...). On utilise l'id de l'objet pour modifier l'attribut src qui correspond donc à la source.
Dans un premier temps, on verifie qu'il a bien des objets possedant un id sur le document (On va chercher si il y a des valeurs dans les tableaux document.all ou document.layers, ou dans la fonction document.getElementById, pour assurer la compatilité) puis on change l'attribut src.
C'est plus ou moins une fonction générique, du moment ou tu changes l'attribut que tu veux modifier (ici src, mais par exemple innerHTML pour un calque).
Code : Tout sélectionner
// Objet = Id de ton Objet (img, iframe...)
// Source = La source de l'Objet
function Change_Source(Objet, Source) {
if (document.getElementById) {
document.getElementById(Objet).src = Valeur;
return true;
}
else if (document.all && !document.getElementById) {
document.all[Objet].src = Valeur;
return true;
}
else if (document.layers) {
document.layers[Objet].src = Valeur;
return true;
}
return false;
}
<iframe src="pagetemp.php" style="display:none" name="IframeExec">
<!-- ou <img src="temp.php" style="display:none"> -->
// Quand tu clics, la page temp.php de l'Iframe se recharge et execute ton code
<input type="button" OnClick="Change_Source('IframeExec', 'pageaction.php?action=aleatoire');">
D'ailleurs pour te faciliter la tache, voici une fonction pour modifier le contenu d'un calque. Meme principe que predecement, sauf qu'on change le contenu du calque via innerHTML.
Code : Tout sélectionner
// Calque = Id de ton Calque
// Valeur = Contenu du Calque
function Change_Calque(Calque, Valeur) {
if (document.getElementById) {
document.getElementById(Calque).innerHTML = Valeur;
return true;
}
else if (document.all && !document.getElementById) {
document.all[Calque].innerHTML = Valeur;
return true;
}
else if (document.layers) {
document.layers[Calque].innerHTML = Valeur;
return true;
}
return false;
}
Et puis une autre fonction pour afficher / masquer un calque. On change l'attribut style.display par none ou block.
C'est loin d'etre une fonction adapté à ce genre d'action. On peut utiliser l'attribut visibility pour eviter les mouvements desagréables.
Code : Tout sélectionner
// Calque = id de ton Calque
// Display = true ou false (Affiché oui ou non)
function Affiche_Calque(Calque, Display) {
if (Display) { Display = 'block'; }
else { Display = 'none'; }
if (document.getElementById){
document.getElementById(Calque).style.display = Display;
return true;
}
else if (document.all) {
document.all[Calque].style.display = Display;
return true;
}
else if (document.layers) {
document.layers[Calque].style.display = Display;
return true;
}
return false;
}
<input type="button" value="Display" OnClick="Affiche_Calque('Teste', true);"><input type="button" value="Hide" OnClick="Affiche_Calque('Teste', false);">
<br><div id="Teste" style="display: none; margin: 10px; padding: 5px; background-color: #F0F0F0">function <b>Affiche_Calque</b>(Calque <i>Id</i>, Display <i>Boolean</i>)</div>
I'll be back...

Vincent (nok-I)