Le plus simple pour ça est d'utiliser une variable globale qui stocke l'id
de l'élément (le lien) cliqué.
A chaque clic vous mettez en surbillance l'élément cliqué et vous retirez
la surbrillance de l'élément stocké dans la variable globale.
Un machin dans ce genre ci pour IE:
//---8<---
var marqueur
document.onclick=document_click
function document_click(){
with(event.srcElement){
if(tagName.toLowerCase()=='a'){
style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
document
.getElementById(marqueur)
.style
.backgroundColor=''
}
marqueur=uniqueID
}
}
}
//---8<---
ça fonctionne très bien...sauf si l'internaute clique sur le bouton
précédent de son navigateur, l'actualisation de la couleur du lien ne suis
pas, et c'est un peu embêtant.
En attendant, j'utilise l'autre méthode qui recharge la page.Mais ce que je voulais savoir c'est le contexte du projet.
Les fichiers que vous chargez, vous en contrôlez le contenu ?
Oui, enfin, j'éspère ;-)Ce sont juste des fichiers html locaux sur le serveur ou des fichiers
externes issus d'internet (dans un contexte de navigation) ?
Je ne sais pas si j'ai bien saisi le sens de la question...
Bon, en m'exprimant modestement avec mes mots à moi, disons que je
construis
tout bêtement des pages html déstinées à être placées sur un serveur, pour
être consultées par les internautes via leur navigateur.
Cordialement
sympatix
Le plus simple pour ça est d'utiliser une variable globale qui stocke l'id
de l'élément (le lien) cliqué.
A chaque clic vous mettez en surbillance l'élément cliqué et vous retirez
la surbrillance de l'élément stocké dans la variable globale.
Un machin dans ce genre ci pour IE:
//---8<---
var marqueur
document.onclick=document_click
function document_click(){
with(event.srcElement){
if(tagName.toLowerCase()=='a'){
style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
document
.getElementById(marqueur)
.style
.backgroundColor=''
}
marqueur=uniqueID
}
}
}
//---8<---
ça fonctionne très bien...sauf si l'internaute clique sur le bouton
précédent de son navigateur, l'actualisation de la couleur du lien ne suis
pas, et c'est un peu embêtant.
En attendant, j'utilise l'autre méthode qui recharge la page.
Mais ce que je voulais savoir c'est le contexte du projet.
Les fichiers que vous chargez, vous en contrôlez le contenu ?
Oui, enfin, j'éspère ;-)
Ce sont juste des fichiers html locaux sur le serveur ou des fichiers
externes issus d'internet (dans un contexte de navigation) ?
Je ne sais pas si j'ai bien saisi le sens de la question...
Bon, en m'exprimant modestement avec mes mots à moi, disons que je
construis
tout bêtement des pages html déstinées à être placées sur un serveur, pour
être consultées par les internautes via leur navigateur.
Cordialement
sympatix
Le plus simple pour ça est d'utiliser une variable globale qui stocke l'id
de l'élément (le lien) cliqué.
A chaque clic vous mettez en surbillance l'élément cliqué et vous retirez
la surbrillance de l'élément stocké dans la variable globale.
Un machin dans ce genre ci pour IE:
//---8<---
var marqueur
document.onclick=document_click
function document_click(){
with(event.srcElement){
if(tagName.toLowerCase()=='a'){
style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
document
.getElementById(marqueur)
.style
.backgroundColor=''
}
marqueur=uniqueID
}
}
}
//---8<---
ça fonctionne très bien...sauf si l'internaute clique sur le bouton
précédent de son navigateur, l'actualisation de la couleur du lien ne suis
pas, et c'est un peu embêtant.
En attendant, j'utilise l'autre méthode qui recharge la page.Mais ce que je voulais savoir c'est le contexte du projet.
Les fichiers que vous chargez, vous en contrôlez le contenu ?
Oui, enfin, j'éspère ;-)Ce sont juste des fichiers html locaux sur le serveur ou des fichiers
externes issus d'internet (dans un contexte de navigation) ?
Je ne sais pas si j'ai bien saisi le sens de la question...
Bon, en m'exprimant modestement avec mes mots à moi, disons que je
construis
tout bêtement des pages html déstinées à être placées sur un serveur, pour
être consultées par les internautes via leur navigateur.
Cordialement
sympatix
Le plus simple pour ça est d'utiliser une variable globale qui
stocke l'id de l'élément (le lien) cliqué.
A chaque clic vous mettez en surbillance l'élément cliqué et vous
retirez la surbrillance de l'élément stocké dans la variable
globale. Un machin dans ce genre ci pour IE:
//---8<---
var marqueur
document.onclick=document_click
function document_click(){
with(event.srcElement){
if(tagName.toLowerCase()=='a'){
style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
document
.getElementById(marqueur)
.style
.backgroundColor=''
}
marqueur=uniqueID
}
}
}
//---8<---
ça fonctionne très bien...sauf si l'internaute clique sur le bouton
précédent de son navigateur, l'actualisation de la couleur du lien
ne suis pas, et c'est un peu embêtant.
En attendant, j'utilise l'autre méthode qui recharge la page.Mais ce que je voulais savoir c'est le contexte du projet.
Les fichiers que vous chargez, vous en contrôlez le contenu ?
Oui, enfin, j'éspère ;-)Ce sont juste des fichiers html locaux sur le serveur ou des
fichiers externes issus d'internet (dans un contexte de navigation)
?
Je ne sais pas si j'ai bien saisi le sens de la question...
Bon, en m'exprimant modestement avec mes mots à moi, disons que je
construis
tout bêtement des pages html déstinées à être placées sur un
serveur, pour être consultées par les internautes via leur
navigateur. Cordialement
sympatix
Vous ciblez donc des navigateurs différents d'IE.
Je me demandais si dans votre cas l'utilisation de l'objet xmlhttp ne
serait pas plus judicieuse.
Mais le projet doit être pensé différemment.
Vous avez un document maître (Multi_Pages.HTM) qui contient les
scripts, la feuille de style etc ... et les documents (documet_1.htm
et document_2.htm) chargés (insérés) doivent être en utf8 pour une
plus grande portabilité.
Voici une page de test (sans fignolages) qui devrait passer sous
IE,Firefox et Opera.
Cliquez sur ce lien pour tester:
http://automation.eu.tf/multi_pages.htm
La source de http://automation.eu.tf/multi_pages.htm:
<!---8<---Multi_Pages.HTM---Jean-JMST-Belgium--->
<!--
Illustre le remplissage d'une DIV avec le contenu
de documents obtenu à l'aide de XmlHttp.
Testé avec IE 6, FireFox 1.0.3 et Opera 8.
Ce document utilise les fichiers UTF8 document_1.htm
et document_2.htm.
-->
<html>
<style>
/*
Ce style sera utilisé par les documents (
document_1.htm et document_2.htm)insérés dans la DIV
*/
.multi_pages{background-color:red}
</style>
<body id='corps'>
<noscript>
<b>
Pour afficher ce document correctement vous devez
posséder un navigateur gérant les sripts et/ou activer
les scripts dans votre navigateur.
</b>
</noscript>
<div id='D0'>
MENU :
<a id='lien_1' href='document_1.htm'>Document_1</a>
<a id='lien_2' href='document_2.htm'>Document_2</a>
</div>
<div id='D1'>Zone d'affichage</div>
</body>
<script language='javascript' type='text/javascript'>
<!--Définitions de variables globales-->
marqueur=''
body=document.getElementById('corps')
if(!document.all){
D0=document.getElementById('D0')
D1=document.getElementById('D1')
}
<!--Définitions des styles et positionnement des éléments-->
mise_en_page()
<!--Définitions des événements-->
window.onresize=taille_elements
document.onclick=document_click
<!--Routines--->
function mise_en_page(){
with(body.style){
fontFamily='verdana,arial'
fontSize='10pt'
margin=border=padding=0
overflow='hidden'
}
with(D0.style){
height='30px'
backgroundColor='lemonchiffon'
paddingLeft='10px'
}
with(D1.style){
backgroundColor='silver'
paddingLeft=paddingRight='10px'
overflow='auto'
}
taille_elements()
}
function taille_elements(){
var max=body.offsetHeight
if(!document.all){
max=document.documentElement.offsetHeight
}
setTimeout("D1.style.height=("+max+"-D0.offsetHeight)+'px'",10)
}
function inserer(quoi,dans_quoi){
/*
Routine d'insertion du contenu d'un document
dans la div (D1)
*/
//Recherche de l'objet XmlHttp
try{
var xmlhttp=new ActiveXObject('Microsoft.XMLHTTP')
}catch(e){
try{
var xmlhttp=new ActiveXObject('MSXML2.XMLHTTP')
}catch(e){
try{
var xmlhttp=new XMLHttpRequest()
}catch(e){
document
.getElementById(dans_quoi)
.innerHTML='XmlHttp absent.'
return false
}
}
}
with(xmlhttp){
//Récupération du document
open('GET',quoi,false)
send(null)
//Insertion du contenu du document dans la DIV (D1)
document
.getElementById(dans_quoi)
.innerHTML=responseText
}
}
function document_click(e){
/*
Routine de gestion de l'événement onclick du document
*/
var el
if(document.all){el=event.srcElement}else{el=e.target}
//Si l'élément est un lien
if(el.tagName.toLowerCase()=='a'){
//Si l'élément est contenu dans le "menu" (DIV D0)
if(el.parentNode.id=='D0'){
//Changer la couleur de fond de l'élément
el.style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
var m=document.getElementById(marqueur)
//Si (et seulement si) l'élément n'est pas celui défini
//dans la variable globale "marqueur"
if(m.id!==el.id){
//restaurer la couleur de fond
m.style.backgroundColor=''
}
}
//Définir la variable "marqueur" avec l'id de l'élément
marqueur=el.id
}
//si le nom d'hôte de la cible correspond à celui du document
principal
if(el.hostname==document.location.hostname){
//rempli D1 avec le contenu du document
inserer(el.href,'D1')
return false;
}
//Ouvre les liens externes dans une nouvelle fenêtre (ou onglet)
el.target='_blank'
}
}
function script_d_enfer(){
/*
routine d'enfer appelée dans les documents document_1.htm
et document_2.htm
*/
alert('Je suis le script d'enfer de multi_pages.htm')
return false
}
</script>
</html>
<!---8<---Multi_Pages.HTM---Jean-JMST-Belgium--->
Amicalement,
Le plus simple pour ça est d'utiliser une variable globale qui
stocke l'id de l'élément (le lien) cliqué.
A chaque clic vous mettez en surbillance l'élément cliqué et vous
retirez la surbrillance de l'élément stocké dans la variable
globale. Un machin dans ce genre ci pour IE:
//---8<---
var marqueur
document.onclick=document_click
function document_click(){
with(event.srcElement){
if(tagName.toLowerCase()=='a'){
style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
document
.getElementById(marqueur)
.style
.backgroundColor=''
}
marqueur=uniqueID
}
}
}
//---8<---
ça fonctionne très bien...sauf si l'internaute clique sur le bouton
précédent de son navigateur, l'actualisation de la couleur du lien
ne suis pas, et c'est un peu embêtant.
En attendant, j'utilise l'autre méthode qui recharge la page.
Mais ce que je voulais savoir c'est le contexte du projet.
Les fichiers que vous chargez, vous en contrôlez le contenu ?
Oui, enfin, j'éspère ;-)
Ce sont juste des fichiers html locaux sur le serveur ou des
fichiers externes issus d'internet (dans un contexte de navigation)
?
Je ne sais pas si j'ai bien saisi le sens de la question...
Bon, en m'exprimant modestement avec mes mots à moi, disons que je
construis
tout bêtement des pages html déstinées à être placées sur un
serveur, pour être consultées par les internautes via leur
navigateur. Cordialement
sympatix
Vous ciblez donc des navigateurs différents d'IE.
Je me demandais si dans votre cas l'utilisation de l'objet xmlhttp ne
serait pas plus judicieuse.
Mais le projet doit être pensé différemment.
Vous avez un document maître (Multi_Pages.HTM) qui contient les
scripts, la feuille de style etc ... et les documents (documet_1.htm
et document_2.htm) chargés (insérés) doivent être en utf8 pour une
plus grande portabilité.
Voici une page de test (sans fignolages) qui devrait passer sous
IE,Firefox et Opera.
Cliquez sur ce lien pour tester:
http://automation.eu.tf/multi_pages.htm
La source de http://automation.eu.tf/multi_pages.htm:
<!---8<---Multi_Pages.HTM---Jean-JMST-Belgium--->
<!--
Illustre le remplissage d'une DIV avec le contenu
de documents obtenu à l'aide de XmlHttp.
Testé avec IE 6, FireFox 1.0.3 et Opera 8.
Ce document utilise les fichiers UTF8 document_1.htm
et document_2.htm.
-->
<html>
<style>
/*
Ce style sera utilisé par les documents (
document_1.htm et document_2.htm)insérés dans la DIV
*/
.multi_pages{background-color:red}
</style>
<body id='corps'>
<noscript>
<b>
Pour afficher ce document correctement vous devez
posséder un navigateur gérant les sripts et/ou activer
les scripts dans votre navigateur.
</b>
</noscript>
<div id='D0'>
MENU :
<a id='lien_1' href='document_1.htm'>Document_1</a>
<a id='lien_2' href='document_2.htm'>Document_2</a>
</div>
<div id='D1'>Zone d'affichage</div>
</body>
<script language='javascript' type='text/javascript'>
<!--Définitions de variables globales-->
marqueur=''
body=document.getElementById('corps')
if(!document.all){
D0=document.getElementById('D0')
D1=document.getElementById('D1')
}
<!--Définitions des styles et positionnement des éléments-->
mise_en_page()
<!--Définitions des événements-->
window.onresize=taille_elements
document.onclick=document_click
<!--Routines--->
function mise_en_page(){
with(body.style){
fontFamily='verdana,arial'
fontSize='10pt'
margin=border=padding=0
overflow='hidden'
}
with(D0.style){
height='30px'
backgroundColor='lemonchiffon'
paddingLeft='10px'
}
with(D1.style){
backgroundColor='silver'
paddingLeft=paddingRight='10px'
overflow='auto'
}
taille_elements()
}
function taille_elements(){
var max=body.offsetHeight
if(!document.all){
max=document.documentElement.offsetHeight
}
setTimeout("D1.style.height=("+max+"-D0.offsetHeight)+'px'",10)
}
function inserer(quoi,dans_quoi){
/*
Routine d'insertion du contenu d'un document
dans la div (D1)
*/
//Recherche de l'objet XmlHttp
try{
var xmlhttp=new ActiveXObject('Microsoft.XMLHTTP')
}catch(e){
try{
var xmlhttp=new ActiveXObject('MSXML2.XMLHTTP')
}catch(e){
try{
var xmlhttp=new XMLHttpRequest()
}catch(e){
document
.getElementById(dans_quoi)
.innerHTML='XmlHttp absent.'
return false
}
}
}
with(xmlhttp){
//Récupération du document
open('GET',quoi,false)
send(null)
//Insertion du contenu du document dans la DIV (D1)
document
.getElementById(dans_quoi)
.innerHTML=responseText
}
}
function document_click(e){
/*
Routine de gestion de l'événement onclick du document
*/
var el
if(document.all){el=event.srcElement}else{el=e.target}
//Si l'élément est un lien
if(el.tagName.toLowerCase()=='a'){
//Si l'élément est contenu dans le "menu" (DIV D0)
if(el.parentNode.id=='D0'){
//Changer la couleur de fond de l'élément
el.style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
var m=document.getElementById(marqueur)
//Si (et seulement si) l'élément n'est pas celui défini
//dans la variable globale "marqueur"
if(m.id!==el.id){
//restaurer la couleur de fond
m.style.backgroundColor=''
}
}
//Définir la variable "marqueur" avec l'id de l'élément
marqueur=el.id
}
//si le nom d'hôte de la cible correspond à celui du document
principal
if(el.hostname==document.location.hostname){
//rempli D1 avec le contenu du document
inserer(el.href,'D1')
return false;
}
//Ouvre les liens externes dans une nouvelle fenêtre (ou onglet)
el.target='_blank'
}
}
function script_d_enfer(){
/*
routine d'enfer appelée dans les documents document_1.htm
et document_2.htm
*/
alert('Je suis le script d'enfer de multi_pages.htm')
return false
}
</script>
</html>
<!---8<---Multi_Pages.HTM---Jean-JMST-Belgium--->
Amicalement,
Le plus simple pour ça est d'utiliser une variable globale qui
stocke l'id de l'élément (le lien) cliqué.
A chaque clic vous mettez en surbillance l'élément cliqué et vous
retirez la surbrillance de l'élément stocké dans la variable
globale. Un machin dans ce genre ci pour IE:
//---8<---
var marqueur
document.onclick=document_click
function document_click(){
with(event.srcElement){
if(tagName.toLowerCase()=='a'){
style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
document
.getElementById(marqueur)
.style
.backgroundColor=''
}
marqueur=uniqueID
}
}
}
//---8<---
ça fonctionne très bien...sauf si l'internaute clique sur le bouton
précédent de son navigateur, l'actualisation de la couleur du lien
ne suis pas, et c'est un peu embêtant.
En attendant, j'utilise l'autre méthode qui recharge la page.Mais ce que je voulais savoir c'est le contexte du projet.
Les fichiers que vous chargez, vous en contrôlez le contenu ?
Oui, enfin, j'éspère ;-)Ce sont juste des fichiers html locaux sur le serveur ou des
fichiers externes issus d'internet (dans un contexte de navigation)
?
Je ne sais pas si j'ai bien saisi le sens de la question...
Bon, en m'exprimant modestement avec mes mots à moi, disons que je
construis
tout bêtement des pages html déstinées à être placées sur un
serveur, pour être consultées par les internautes via leur
navigateur. Cordialement
sympatix
Vous ciblez donc des navigateurs différents d'IE.
Je me demandais si dans votre cas l'utilisation de l'objet xmlhttp ne
serait pas plus judicieuse.
Mais le projet doit être pensé différemment.
Vous avez un document maître (Multi_Pages.HTM) qui contient les
scripts, la feuille de style etc ... et les documents (documet_1.htm
et document_2.htm) chargés (insérés) doivent être en utf8 pour une
plus grande portabilité.
Voici une page de test (sans fignolages) qui devrait passer sous
IE,Firefox et Opera.
Cliquez sur ce lien pour tester:
http://automation.eu.tf/multi_pages.htm
La source de http://automation.eu.tf/multi_pages.htm:
<!---8<---Multi_Pages.HTM---Jean-JMST-Belgium--->
<!--
Illustre le remplissage d'une DIV avec le contenu
de documents obtenu à l'aide de XmlHttp.
Testé avec IE 6, FireFox 1.0.3 et Opera 8.
Ce document utilise les fichiers UTF8 document_1.htm
et document_2.htm.
-->
<html>
<style>
/*
Ce style sera utilisé par les documents (
document_1.htm et document_2.htm)insérés dans la DIV
*/
.multi_pages{background-color:red}
</style>
<body id='corps'>
<noscript>
<b>
Pour afficher ce document correctement vous devez
posséder un navigateur gérant les sripts et/ou activer
les scripts dans votre navigateur.
</b>
</noscript>
<div id='D0'>
MENU :
<a id='lien_1' href='document_1.htm'>Document_1</a>
<a id='lien_2' href='document_2.htm'>Document_2</a>
</div>
<div id='D1'>Zone d'affichage</div>
</body>
<script language='javascript' type='text/javascript'>
<!--Définitions de variables globales-->
marqueur=''
body=document.getElementById('corps')
if(!document.all){
D0=document.getElementById('D0')
D1=document.getElementById('D1')
}
<!--Définitions des styles et positionnement des éléments-->
mise_en_page()
<!--Définitions des événements-->
window.onresize=taille_elements
document.onclick=document_click
<!--Routines--->
function mise_en_page(){
with(body.style){
fontFamily='verdana,arial'
fontSize='10pt'
margin=border=padding=0
overflow='hidden'
}
with(D0.style){
height='30px'
backgroundColor='lemonchiffon'
paddingLeft='10px'
}
with(D1.style){
backgroundColor='silver'
paddingLeft=paddingRight='10px'
overflow='auto'
}
taille_elements()
}
function taille_elements(){
var max=body.offsetHeight
if(!document.all){
max=document.documentElement.offsetHeight
}
setTimeout("D1.style.height=("+max+"-D0.offsetHeight)+'px'",10)
}
function inserer(quoi,dans_quoi){
/*
Routine d'insertion du contenu d'un document
dans la div (D1)
*/
//Recherche de l'objet XmlHttp
try{
var xmlhttp=new ActiveXObject('Microsoft.XMLHTTP')
}catch(e){
try{
var xmlhttp=new ActiveXObject('MSXML2.XMLHTTP')
}catch(e){
try{
var xmlhttp=new XMLHttpRequest()
}catch(e){
document
.getElementById(dans_quoi)
.innerHTML='XmlHttp absent.'
return false
}
}
}
with(xmlhttp){
//Récupération du document
open('GET',quoi,false)
send(null)
//Insertion du contenu du document dans la DIV (D1)
document
.getElementById(dans_quoi)
.innerHTML=responseText
}
}
function document_click(e){
/*
Routine de gestion de l'événement onclick du document
*/
var el
if(document.all){el=event.srcElement}else{el=e.target}
//Si l'élément est un lien
if(el.tagName.toLowerCase()=='a'){
//Si l'élément est contenu dans le "menu" (DIV D0)
if(el.parentNode.id=='D0'){
//Changer la couleur de fond de l'élément
el.style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
var m=document.getElementById(marqueur)
//Si (et seulement si) l'élément n'est pas celui défini
//dans la variable globale "marqueur"
if(m.id!==el.id){
//restaurer la couleur de fond
m.style.backgroundColor=''
}
}
//Définir la variable "marqueur" avec l'id de l'élément
marqueur=el.id
}
//si le nom d'hôte de la cible correspond à celui du document
principal
if(el.hostname==document.location.hostname){
//rempli D1 avec le contenu du document
inserer(el.href,'D1')
return false;
}
//Ouvre les liens externes dans une nouvelle fenêtre (ou onglet)
el.target='_blank'
}
}
function script_d_enfer(){
/*
routine d'enfer appelée dans les documents document_1.htm
et document_2.htm
*/
alert('Je suis le script d'enfer de multi_pages.htm')
return false
}
</script>
</html>
<!---8<---Multi_Pages.HTM---Jean-JMST-Belgium--->
Amicalement,
Dans son message
Jean nous dit :Le plus simple pour ça est d'utiliser une variable globale qui
stocke l'id de l'élément (le lien) cliqué.
A chaque clic vous mettez en surbillance l'élément cliqué et vous
retirez la surbrillance de l'élément stocké dans la variable
globale. Un machin dans ce genre ci pour IE:
//---8<---
var marqueur
document.onclick=document_click
function document_click(){
with(event.srcElement){
if(tagName.toLowerCase()=='a'){
style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
document
.getElementById(marqueur)
.style
.backgroundColor=''
}
marqueur=uniqueID
}
}
}
//---8<---
ça fonctionne très bien...sauf si l'internaute clique sur le bouton
précédent de son navigateur, l'actualisation de la couleur du lien
ne suis pas, et c'est un peu embêtant.
En attendant, j'utilise l'autre méthode qui recharge la page.Mais ce que je voulais savoir c'est le contexte du projet.
Les fichiers que vous chargez, vous en contrôlez le contenu ?
Oui, enfin, j'éspère ;-)Ce sont juste des fichiers html locaux sur le serveur ou des
fichiers externes issus d'internet (dans un contexte de navigation)
?
Je ne sais pas si j'ai bien saisi le sens de la question...
Bon, en m'exprimant modestement avec mes mots à moi, disons que je
construis
tout bêtement des pages html déstinées à être placées sur un
serveur, pour être consultées par les internautes via leur
navigateur. Cordialement
sympatix
Vous ciblez donc des navigateurs différents d'IE.
Je me demandais si dans votre cas l'utilisation de l'objet xmlhttp ne
serait pas plus judicieuse.
Mais le projet doit être pensé différemment.
Vous avez un document maître (Multi_Pages.HTM) qui contient les
scripts, la feuille de style etc ... et les documents (documet_1.htm
et document_2.htm) chargés (insérés) doivent être en utf8 pour une
plus grande portabilité.
Voici une page de test (sans fignolages) qui devrait passer sous
IE,Firefox et Opera.
Cliquez sur ce lien pour tester:
http://automation.eu.tf/multi_pages.htm
La source de http://automation.eu.tf/multi_pages.htm:
<!---8<---Multi_Pages.HTM---Jean-JMST-Belgium--->
<!--
Illustre le remplissage d'une DIV avec le contenu
de documents obtenu à l'aide de XmlHttp.
Testé avec IE 6, FireFox 1.0.3 et Opera 8.
Ce document utilise les fichiers UTF8 document_1.htm
et document_2.htm.
-->
<html>
<style>
/*
Ce style sera utilisé par les documents (
document_1.htm et document_2.htm)insérés dans la DIV
*/
.multi_pages{background-color:red}
</style>
<body id='corps'>
<noscript>
<b>
Pour afficher ce document correctement vous devez
posséder un navigateur gérant les sripts et/ou activer
les scripts dans votre navigateur.
</b>
</noscript>
<div id='D0'>
MENU :
<a id='lien_1' href='document_1.htm'>Document_1</a>
<a id='lien_2' href='document_2.htm'>Document_2</a>
</div>
<div id='D1'>Zone d'affichage</div>
</body>
<script language='javascript' type='text/javascript'>
<!--Définitions de variables globales-->
marqueur=''
body=document.getElementById('corps')
if(!document.all){
D0=document.getElementById('D0')
D1=document.getElementById('D1')
}
<!--Définitions des styles et positionnement des éléments-->
mise_en_page()
<!--Définitions des événements-->
window.onresize=taille_elements
document.onclick=document_click
<!--Routines--->
function mise_en_page(){
with(body.style){
fontFamily='verdana,arial'
fontSize='10pt'
margin=border=padding=0
overflow='hidden'
}
with(D0.style){
height='30px'
backgroundColor='lemonchiffon'
paddingLeft='10px'
}
with(D1.style){
backgroundColor='silver'
paddingLeft=paddingRight='10px'
overflow='auto'
}
taille_elements()
}
function taille_elements(){
var max=body.offsetHeight
if(!document.all){
max=document.documentElement.offsetHeight
}
setTimeout("D1.style.height=("+max+"-D0.offsetHeight)+'px'",10)
}
function inserer(quoi,dans_quoi){
/*
Routine d'insertion du contenu d'un document
dans la div (D1)
*/
//Recherche de l'objet XmlHttp
try{
var xmlhttp=new ActiveXObject('Microsoft.XMLHTTP')
}catch(e){
try{
var xmlhttp=new ActiveXObject('MSXML2.XMLHTTP')
}catch(e){
try{
var xmlhttp=new XMLHttpRequest()
}catch(e){
document
.getElementById(dans_quoi)
.innerHTML='XmlHttp absent.'
return false
}
}
}
with(xmlhttp){
//Récupération du document
open('GET',quoi,false)
send(null)
//Insertion du contenu du document dans la DIV (D1)
document
.getElementById(dans_quoi)
.innerHTML=responseText
}
}
function document_click(e){
/*
Routine de gestion de l'événement onclick du document
*/
var el
if(document.all){el=event.srcElement}else{el=e.target}
//Si l'élément est un lien
if(el.tagName.toLowerCase()=='a'){
//Si l'élément est contenu dans le "menu" (DIV D0)
if(el.parentNode.id=='D0'){
//Changer la couleur de fond de l'élément
el.style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
var m=document.getElementById(marqueur)
//Si (et seulement si) l'élément n'est pas celui défini
//dans la variable globale "marqueur"
if(m.id!==el.id){
//restaurer la couleur de fond
m.style.backgroundColor=''
}
}
//Définir la variable "marqueur" avec l'id de l'élément
marqueur=el.id
}
//si le nom d'hôte de la cible correspond à celui du document
principal
if(el.hostname==document.location.hostname){
//rempli D1 avec le contenu du document
inserer(el.href,'D1')
return false;
}
//Ouvre les liens externes dans une nouvelle fenêtre (ou onglet)
el.target='_blank'
}
}
function script_d_enfer(){
/*
routine d'enfer appelée dans les documents document_1.htm
et document_2.htm
*/
alert('Je suis le script d'enfer de multi_pages.htm')
return false
}
</script>
</html>
<!---8<---Multi_Pages.HTM---Jean-JMST-Belgium--->
Amicalement,
Bonjour Jean,
J'ai lu avec grand intérêt cette démonstration de xmlhttp et j'aurais
quelques questions/remarques.
Tu dis que c'est compatible avec plusieurs navigateurs, ce dont je ne doute
pas. L'est-ce avec d'autres systèmes que la famille Windows (je pense aux
ActiveX utilisés, et je ne connais pas assez les autres systèmes pour
savoir s'ils comprennent ce 'langage', Linux, Mac, ...)
Cela semble reproduire le comportement des iframes,
j'ai noté une différence très intéressante en ce qui concerne la (non)
gestion des flèches d'historique (page précédente-page suivante).
Y a-t-il d'autres différences du même genre dont il faut être conscient ?
Dans le même ordre d'idée, quels critères pourrais-tu m'indiquer pour faire
un choix entre iframes et xmlhttp ?
(j'ai une application qui utilise actuellement les iframes, pas de
contraintes liées au référencement, un problème à résoudre (pas très grave)
concernant l'historique, les contenus des iframes sont des pages aspx)
Dernière remarque concernant le problème de Sympatix, son souhait était de
mettre à jour le menu en fonction du document chargé. Pas de souci si
l'utilisateur passe par le menu, mais dans le cas de liens internes au
document ? Il faudrait étendre la fonction document_onclick de façon à
rechercher le lien du menu qui a la même cible que le lien cliqué.
Est-ce
qu'on peut faire cela simplement ou bien y a-t-il des pièges à éviter dans
la comparaison des url ?
Dans son message mn.bb7a7d55b43c0680.3499@windows
Jean nous dit :
Le plus simple pour ça est d'utiliser une variable globale qui
stocke l'id de l'élément (le lien) cliqué.
A chaque clic vous mettez en surbillance l'élément cliqué et vous
retirez la surbrillance de l'élément stocké dans la variable
globale. Un machin dans ce genre ci pour IE:
//---8<---
var marqueur
document.onclick=document_click
function document_click(){
with(event.srcElement){
if(tagName.toLowerCase()=='a'){
style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
document
.getElementById(marqueur)
.style
.backgroundColor=''
}
marqueur=uniqueID
}
}
}
//---8<---
ça fonctionne très bien...sauf si l'internaute clique sur le bouton
précédent de son navigateur, l'actualisation de la couleur du lien
ne suis pas, et c'est un peu embêtant.
En attendant, j'utilise l'autre méthode qui recharge la page.
Mais ce que je voulais savoir c'est le contexte du projet.
Les fichiers que vous chargez, vous en contrôlez le contenu ?
Oui, enfin, j'éspère ;-)
Ce sont juste des fichiers html locaux sur le serveur ou des
fichiers externes issus d'internet (dans un contexte de navigation)
?
Je ne sais pas si j'ai bien saisi le sens de la question...
Bon, en m'exprimant modestement avec mes mots à moi, disons que je
construis
tout bêtement des pages html déstinées à être placées sur un
serveur, pour être consultées par les internautes via leur
navigateur. Cordialement
sympatix
Vous ciblez donc des navigateurs différents d'IE.
Je me demandais si dans votre cas l'utilisation de l'objet xmlhttp ne
serait pas plus judicieuse.
Mais le projet doit être pensé différemment.
Vous avez un document maître (Multi_Pages.HTM) qui contient les
scripts, la feuille de style etc ... et les documents (documet_1.htm
et document_2.htm) chargés (insérés) doivent être en utf8 pour une
plus grande portabilité.
Voici une page de test (sans fignolages) qui devrait passer sous
IE,Firefox et Opera.
Cliquez sur ce lien pour tester:
http://automation.eu.tf/multi_pages.htm
La source de http://automation.eu.tf/multi_pages.htm:
<!---8<---Multi_Pages.HTM---Jean-JMST-Belgium--->
<!--
Illustre le remplissage d'une DIV avec le contenu
de documents obtenu à l'aide de XmlHttp.
Testé avec IE 6, FireFox 1.0.3 et Opera 8.
Ce document utilise les fichiers UTF8 document_1.htm
et document_2.htm.
-->
<html>
<style>
/*
Ce style sera utilisé par les documents (
document_1.htm et document_2.htm)insérés dans la DIV
*/
.multi_pages{background-color:red}
</style>
<body id='corps'>
<noscript>
<b>
Pour afficher ce document correctement vous devez
posséder un navigateur gérant les sripts et/ou activer
les scripts dans votre navigateur.
</b>
</noscript>
<div id='D0'>
MENU :
<a id='lien_1' href='document_1.htm'>Document_1</a>
<a id='lien_2' href='document_2.htm'>Document_2</a>
</div>
<div id='D1'>Zone d'affichage</div>
</body>
<script language='javascript' type='text/javascript'>
<!--Définitions de variables globales-->
marqueur=''
body=document.getElementById('corps')
if(!document.all){
D0=document.getElementById('D0')
D1=document.getElementById('D1')
}
<!--Définitions des styles et positionnement des éléments-->
mise_en_page()
<!--Définitions des événements-->
window.onresize=taille_elements
document.onclick=document_click
<!--Routines--->
function mise_en_page(){
with(body.style){
fontFamily='verdana,arial'
fontSize='10pt'
margin=border=padding=0
overflow='hidden'
}
with(D0.style){
height='30px'
backgroundColor='lemonchiffon'
paddingLeft='10px'
}
with(D1.style){
backgroundColor='silver'
paddingLeft=paddingRight='10px'
overflow='auto'
}
taille_elements()
}
function taille_elements(){
var max=body.offsetHeight
if(!document.all){
max=document.documentElement.offsetHeight
}
setTimeout("D1.style.height=("+max+"-D0.offsetHeight)+'px'",10)
}
function inserer(quoi,dans_quoi){
/*
Routine d'insertion du contenu d'un document
dans la div (D1)
*/
//Recherche de l'objet XmlHttp
try{
var xmlhttp=new ActiveXObject('Microsoft.XMLHTTP')
}catch(e){
try{
var xmlhttp=new ActiveXObject('MSXML2.XMLHTTP')
}catch(e){
try{
var xmlhttp=new XMLHttpRequest()
}catch(e){
document
.getElementById(dans_quoi)
.innerHTML='XmlHttp absent.'
return false
}
}
}
with(xmlhttp){
//Récupération du document
open('GET',quoi,false)
send(null)
//Insertion du contenu du document dans la DIV (D1)
document
.getElementById(dans_quoi)
.innerHTML=responseText
}
}
function document_click(e){
/*
Routine de gestion de l'événement onclick du document
*/
var el
if(document.all){el=event.srcElement}else{el=e.target}
//Si l'élément est un lien
if(el.tagName.toLowerCase()=='a'){
//Si l'élément est contenu dans le "menu" (DIV D0)
if(el.parentNode.id=='D0'){
//Changer la couleur de fond de l'élément
el.style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
var m=document.getElementById(marqueur)
//Si (et seulement si) l'élément n'est pas celui défini
//dans la variable globale "marqueur"
if(m.id!==el.id){
//restaurer la couleur de fond
m.style.backgroundColor=''
}
}
//Définir la variable "marqueur" avec l'id de l'élément
marqueur=el.id
}
//si le nom d'hôte de la cible correspond à celui du document
principal
if(el.hostname==document.location.hostname){
//rempli D1 avec le contenu du document
inserer(el.href,'D1')
return false;
}
//Ouvre les liens externes dans une nouvelle fenêtre (ou onglet)
el.target='_blank'
}
}
function script_d_enfer(){
/*
routine d'enfer appelée dans les documents document_1.htm
et document_2.htm
*/
alert('Je suis le script d'enfer de multi_pages.htm')
return false
}
</script>
</html>
<!---8<---Multi_Pages.HTM---Jean-JMST-Belgium--->
Amicalement,
Bonjour Jean,
J'ai lu avec grand intérêt cette démonstration de xmlhttp et j'aurais
quelques questions/remarques.
Tu dis que c'est compatible avec plusieurs navigateurs, ce dont je ne doute
pas. L'est-ce avec d'autres systèmes que la famille Windows (je pense aux
ActiveX utilisés, et je ne connais pas assez les autres systèmes pour
savoir s'ils comprennent ce 'langage', Linux, Mac, ...)
Cela semble reproduire le comportement des iframes,
j'ai noté une différence très intéressante en ce qui concerne la (non)
gestion des flèches d'historique (page précédente-page suivante).
Y a-t-il d'autres différences du même genre dont il faut être conscient ?
Dans le même ordre d'idée, quels critères pourrais-tu m'indiquer pour faire
un choix entre iframes et xmlhttp ?
(j'ai une application qui utilise actuellement les iframes, pas de
contraintes liées au référencement, un problème à résoudre (pas très grave)
concernant l'historique, les contenus des iframes sont des pages aspx)
Dernière remarque concernant le problème de Sympatix, son souhait était de
mettre à jour le menu en fonction du document chargé. Pas de souci si
l'utilisateur passe par le menu, mais dans le cas de liens internes au
document ? Il faudrait étendre la fonction document_onclick de façon à
rechercher le lien du menu qui a la même cible que le lien cliqué.
Est-ce
qu'on peut faire cela simplement ou bien y a-t-il des pièges à éviter dans
la comparaison des url ?
Dans son message
Jean nous dit :Le plus simple pour ça est d'utiliser une variable globale qui
stocke l'id de l'élément (le lien) cliqué.
A chaque clic vous mettez en surbillance l'élément cliqué et vous
retirez la surbrillance de l'élément stocké dans la variable
globale. Un machin dans ce genre ci pour IE:
//---8<---
var marqueur
document.onclick=document_click
function document_click(){
with(event.srcElement){
if(tagName.toLowerCase()=='a'){
style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
document
.getElementById(marqueur)
.style
.backgroundColor=''
}
marqueur=uniqueID
}
}
}
//---8<---
ça fonctionne très bien...sauf si l'internaute clique sur le bouton
précédent de son navigateur, l'actualisation de la couleur du lien
ne suis pas, et c'est un peu embêtant.
En attendant, j'utilise l'autre méthode qui recharge la page.Mais ce que je voulais savoir c'est le contexte du projet.
Les fichiers que vous chargez, vous en contrôlez le contenu ?
Oui, enfin, j'éspère ;-)Ce sont juste des fichiers html locaux sur le serveur ou des
fichiers externes issus d'internet (dans un contexte de navigation)
?
Je ne sais pas si j'ai bien saisi le sens de la question...
Bon, en m'exprimant modestement avec mes mots à moi, disons que je
construis
tout bêtement des pages html déstinées à être placées sur un
serveur, pour être consultées par les internautes via leur
navigateur. Cordialement
sympatix
Vous ciblez donc des navigateurs différents d'IE.
Je me demandais si dans votre cas l'utilisation de l'objet xmlhttp ne
serait pas plus judicieuse.
Mais le projet doit être pensé différemment.
Vous avez un document maître (Multi_Pages.HTM) qui contient les
scripts, la feuille de style etc ... et les documents (documet_1.htm
et document_2.htm) chargés (insérés) doivent être en utf8 pour une
plus grande portabilité.
Voici une page de test (sans fignolages) qui devrait passer sous
IE,Firefox et Opera.
Cliquez sur ce lien pour tester:
http://automation.eu.tf/multi_pages.htm
La source de http://automation.eu.tf/multi_pages.htm:
<!---8<---Multi_Pages.HTM---Jean-JMST-Belgium--->
<!--
Illustre le remplissage d'une DIV avec le contenu
de documents obtenu à l'aide de XmlHttp.
Testé avec IE 6, FireFox 1.0.3 et Opera 8.
Ce document utilise les fichiers UTF8 document_1.htm
et document_2.htm.
-->
<html>
<style>
/*
Ce style sera utilisé par les documents (
document_1.htm et document_2.htm)insérés dans la DIV
*/
.multi_pages{background-color:red}
</style>
<body id='corps'>
<noscript>
<b>
Pour afficher ce document correctement vous devez
posséder un navigateur gérant les sripts et/ou activer
les scripts dans votre navigateur.
</b>
</noscript>
<div id='D0'>
MENU :
<a id='lien_1' href='document_1.htm'>Document_1</a>
<a id='lien_2' href='document_2.htm'>Document_2</a>
</div>
<div id='D1'>Zone d'affichage</div>
</body>
<script language='javascript' type='text/javascript'>
<!--Définitions de variables globales-->
marqueur=''
body=document.getElementById('corps')
if(!document.all){
D0=document.getElementById('D0')
D1=document.getElementById('D1')
}
<!--Définitions des styles et positionnement des éléments-->
mise_en_page()
<!--Définitions des événements-->
window.onresize=taille_elements
document.onclick=document_click
<!--Routines--->
function mise_en_page(){
with(body.style){
fontFamily='verdana,arial'
fontSize='10pt'
margin=border=padding=0
overflow='hidden'
}
with(D0.style){
height='30px'
backgroundColor='lemonchiffon'
paddingLeft='10px'
}
with(D1.style){
backgroundColor='silver'
paddingLeft=paddingRight='10px'
overflow='auto'
}
taille_elements()
}
function taille_elements(){
var max=body.offsetHeight
if(!document.all){
max=document.documentElement.offsetHeight
}
setTimeout("D1.style.height=("+max+"-D0.offsetHeight)+'px'",10)
}
function inserer(quoi,dans_quoi){
/*
Routine d'insertion du contenu d'un document
dans la div (D1)
*/
//Recherche de l'objet XmlHttp
try{
var xmlhttp=new ActiveXObject('Microsoft.XMLHTTP')
}catch(e){
try{
var xmlhttp=new ActiveXObject('MSXML2.XMLHTTP')
}catch(e){
try{
var xmlhttp=new XMLHttpRequest()
}catch(e){
document
.getElementById(dans_quoi)
.innerHTML='XmlHttp absent.'
return false
}
}
}
with(xmlhttp){
//Récupération du document
open('GET',quoi,false)
send(null)
//Insertion du contenu du document dans la DIV (D1)
document
.getElementById(dans_quoi)
.innerHTML=responseText
}
}
function document_click(e){
/*
Routine de gestion de l'événement onclick du document
*/
var el
if(document.all){el=event.srcElement}else{el=e.target}
//Si l'élément est un lien
if(el.tagName.toLowerCase()=='a'){
//Si l'élément est contenu dans le "menu" (DIV D0)
if(el.parentNode.id=='D0'){
//Changer la couleur de fond de l'élément
el.style.backgroundColor='yellow'
if(marqueur&&document.getElementById(marqueur)){
var m=document.getElementById(marqueur)
//Si (et seulement si) l'élément n'est pas celui défini
//dans la variable globale "marqueur"
if(m.id!==el.id){
//restaurer la couleur de fond
m.style.backgroundColor=''
}
}
//Définir la variable "marqueur" avec l'id de l'élément
marqueur=el.id
}
//si le nom d'hôte de la cible correspond à celui du document
principal
if(el.hostname==document.location.hostname){
//rempli D1 avec le contenu du document
inserer(el.href,'D1')
return false;
}
//Ouvre les liens externes dans une nouvelle fenêtre (ou onglet)
el.target='_blank'
}
}
function script_d_enfer(){
/*
routine d'enfer appelée dans les documents document_1.htm
et document_2.htm
*/
alert('Je suis le script d'enfer de multi_pages.htm')
return false
}
</script>
</html>
<!---8<---Multi_Pages.HTM---Jean-JMST-Belgium--->
Amicalement,
Bonjour Jean,
J'ai lu avec grand intérêt cette démonstration de xmlhttp et j'aurais
quelques questions/remarques.
Tu dis que c'est compatible avec plusieurs navigateurs, ce dont je ne doute
pas. L'est-ce avec d'autres systèmes que la famille Windows (je pense aux
ActiveX utilisés, et je ne connais pas assez les autres systèmes pour
savoir s'ils comprennent ce 'langage', Linux, Mac, ...)
Cela semble reproduire le comportement des iframes,
j'ai noté une différence très intéressante en ce qui concerne la (non)
gestion des flèches d'historique (page précédente-page suivante).
Y a-t-il d'autres différences du même genre dont il faut être conscient ?
Dans le même ordre d'idée, quels critères pourrais-tu m'indiquer pour faire
un choix entre iframes et xmlhttp ?
(j'ai une application qui utilise actuellement les iframes, pas de
contraintes liées au référencement, un problème à résoudre (pas très grave)
concernant l'historique, les contenus des iframes sont des pages aspx)
Dernière remarque concernant le problème de Sympatix, son souhait était de
mettre à jour le menu en fonction du document chargé. Pas de souci si
l'utilisateur passe par le menu, mais dans le cas de liens internes au
document ? Il faudrait étendre la fonction document_onclick de façon à
rechercher le lien du menu qui a la même cible que le lien cliqué.
Est-ce
qu'on peut faire cela simplement ou bien y a-t-il des pièges à éviter dans
la comparaison des url ?
Vous ciblez donc des navigateurs différents d'IE.
Je me demandais si dans votre cas l'utilisation de l'objet xmlhttp ne
serait pas plus judicieuse.
Mais le projet doit être pensé différemment.
Vous avez un document maître (Multi_Pages.HTM) qui contient les scripts,
la feuille de style etc ... et les documents (documet_1.htm et
document_2.htm) chargés (insérés) doivent être en utf8 pour une plus
grande portabilité.
Voici une page de test (sans fignolages) qui devrait passer sous
IE,Firefox et Opera.
Cliquez sur ce lien pour tester:
http://automation.eu.tf/multi_pages.htm
Vous ciblez donc des navigateurs différents d'IE.
Je me demandais si dans votre cas l'utilisation de l'objet xmlhttp ne
serait pas plus judicieuse.
Mais le projet doit être pensé différemment.
Vous avez un document maître (Multi_Pages.HTM) qui contient les scripts,
la feuille de style etc ... et les documents (documet_1.htm et
document_2.htm) chargés (insérés) doivent être en utf8 pour une plus
grande portabilité.
Voici une page de test (sans fignolages) qui devrait passer sous
IE,Firefox et Opera.
Cliquez sur ce lien pour tester:
http://automation.eu.tf/multi_pages.htm
Vous ciblez donc des navigateurs différents d'IE.
Je me demandais si dans votre cas l'utilisation de l'objet xmlhttp ne
serait pas plus judicieuse.
Mais le projet doit être pensé différemment.
Vous avez un document maître (Multi_Pages.HTM) qui contient les scripts,
la feuille de style etc ... et les documents (documet_1.htm et
document_2.htm) chargés (insérés) doivent être en utf8 pour une plus
grande portabilité.
Voici une page de test (sans fignolages) qui devrait passer sous
IE,Firefox et Opera.
Cliquez sur ce lien pour tester:
http://automation.eu.tf/multi_pages.htm