redirection location.href

redirection location.href - HTML/CSS - Programmation

Marsh Posté le 06-11-2005 à 13:28:08    

Bonjour,  
 
je travaille sous une plate-forme XP avec comme navigateur natif IE6 sp2.
J'ai une simple page HTML utilisant du code javascript. Je souhaite changer d'URL lorsque je clique sur un objet tel qu'une image.
Je n'arrive pas à utiliser la fonction location() de javascript pour  changer l'URL  sous IE ...  par contre, ça fonctionne sous FIREFOX.
 
y a t-il une autre fonction dédié à IE 6 ??
 
 
voici le code :
 
function redirect(){  
window.location.href = "http://www.exemple.com";  
}
 
<body>
<a href="javascript:;" OnClick="redirect()"><img src="image.jpg"></a>
</body>
 
 
merci

Reply

Marsh Posté le 06-11-2005 à 13:28:08   

Reply

Marsh Posté le 06-11-2005 à 13:34:34    

Tu peux m'expliquer quel est l'intérêt de faire ça comparé à... je sais pas... un simple lien [:petrus dei]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-11-2005 à 13:37:13    

pourquoi tu mets pas ton url directement dans le href ? Parce que là c'est crado... Si c'est pour le faire en javascript autant mettre directement le onclick sur l'image, pas besoin de <a> si c'est pour ne pas y mettre d'URL.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 06-11-2005 à 13:52:34    

antp a écrit :

pourquoi tu mets pas ton url directement dans le href ? Parce que là c'est crado... Si c'est pour le faire en javascript autant mettre directement le onclick sur l'image, pas besoin de <a> si c'est pour ne pas y mettre d'URL.


 
 
en fait c simple, ce qu'il manque dans le code javascript que j'ai balancé, c'est qu'il y a une demande confirmation à travers un POP-UP ...  
c pour ça que je passe par du javascript ..  
 

Reply

Marsh Posté le 06-11-2005 à 14:09:19    

airsupply a écrit :

en fait c simple, ce qu'il manque dans le code javascript que j'ai balancé, c'est qu'il y a une demande confirmation à travers un POP-UP ...  
c pour ça que je passe par du javascript ..


J'appelle ça du mauvais codage personnellement.
 
Imaginons par exemple que ton visiteur ait désactivé le javascript (parce qu'il surfe depuis le boulot et que, pour des raisons de sécurité, les admins ont désactivé le javascript pour la zone internet), il fait comment, il l'a dans le cul et il faut encore qu'il te remercie [:petrus dei]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-11-2005 à 15:19:49    

Ouais et si la popup est elle aussi désactiver...
 
mdr il va pas y avoir grand chose qui va se passer... ;)

Reply

Marsh Posté le 06-11-2005 à 17:03:36    

xtof_83 a écrit :

Ouais et si la popup est elle aussi désactiver...
 
mdr il va pas y avoir grand chose qui va se passer... ;)


 
le popup n'est pas désactivé, j'utilise la fonction confirm() .
 
bon, alors personne n'a une idée sur le fait que location.href fonctionne sous firefox et non pas sous IE 6.0 sp2 ????
 
 
à l'aideeeee

Reply

Marsh Posté le 06-11-2005 à 17:21:56    

masklinn a écrit :

J'appelle ça du mauvais codage personnellement.
 
Imaginons par exemple que ton visiteur ait désactivé le javascript (parce qu'il surfe depuis le boulot et que, pour des raisons de sécurité, les admins ont désactivé le javascript pour la zone internet), il fait comment, il l'a dans le cul et il faut encore qu'il te remercie [:petrus dei]


 
tout à fait d'accord avec ton opinion. Seulement, y a t-il un autre moyen pour demander confirmation avant une action en cliquant sur une image et en utilisant un popup windows ???  

Reply

Marsh Posté le 06-11-2005 à 18:50:13    

airsupply a écrit :

tout à fait d'accord avec ton opinion. Seulement, y a t-il un autre moyen pour demander confirmation avant une action en cliquant sur une image et en utilisant un popup windows ???


Je parle pas de l'utilisation du confirm(), mais de tout le reste (imposer le javascript, ne pas offrir de liens réels, ...)
 
Dans l'idéal, si j'ai des liens dangereux demandant confirmation dans ma page, je vais faire un truc de ce style:
 
HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>Test page</title>
        <script type="text/javascript" src="test.js"></script>
    </head>
    <body>
        <p><a href="page.html" title="Permet d'effacer son profil" class="dangerous">Dangerous link</a></p>
    </body>
</html>


On fait des liens classiques, propres, avec des <a href="">. On leur donne un titre (indiquant à quoi ils servent, ou bien où ils mènent) et les liens dangereux sont marqués sémantiquement (ici, on les marque comme étant "dangerous" )
 
Ensuite JS

Code :
  1. function changeLinks() {
  2.     links = document.getElementsByTagName('A');
  3.     for(var i=links.length-1; i>=0; --i)
  4.         if(links[i].className.indexOf("dangerous" ) != -1) {
  5.             // lien flaggé "dangereux"
  6.             links[i].onclick = function () {
  7.                 return confirm("Lien dangereux:\n"+this.title);
  8.             }
  9.         }
  10. }
  11. window.onload = function () {
  12.         changeLinks();
  13.     }


Un peu plus compliqué:
Tout d'abord, on récupère l'intégralité des liens (des éléments "A" pour être plus précis).
 
Pour chaque lien, on teste ensuite s'il a été marqué comme dangereux (càd si il y a "dangerous" dans sa liste de classes)
 
Puis, pour chaque lien dangereux on ajoute une confirmation de click (en mettant le title du lien dans le message, afin que l'utilisateur sache pour quelle raison le lien est dangereux).
 
De cette manière

  • Les utilisateurs avec JS sont prévenus proprement
  • Les utilisateurs sans JS peuvent quand même utiliser le lien.


Ensuite, pour ce genre de liens on peut imaginer une page intermédiaire jouant le rôle du confirm() pour les gens sans JS.
 
Pour ça, il suffirait de mettre cette page (de confirmation) comme lien par défaut, et de modifier le lien dans le Javascript (pour pointer directement sur la page de suppression quand le JS est activé, et donc que l'utilisateur passera par le confirm)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-11-2005 à 19:02:56    

masklinn a écrit :

Je parle pas de l'utilisation du confirm(), mais de tout le reste (imposer le javascript, ne pas offrir de liens réels, ...)
 
Dans l'idéal, si j'ai des liens dangereux demandant confirmation dans ma page, je vais faire un truc de ce style:
 
HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>Test page</title>
        <script type="text/javascript" src="test.js"></script>
    </head>
    <body>
        <p><a href="page.html" title="Permet d'effacer son profil" class="dangerous">Dangerous link</a></p>
    </body>
</html>


On fait des liens classiques, propres, avec des <a href="">. On leur donne un titre (indiquant à quoi ils servent, ou bien où ils mènent) et les liens dangereux sont marqués sémantiquement (ici, on les marque comme étant "dangerous" )
 
Ensuite JS

Code :
  1. function changeLinks() {
  2.     links = document.getElementsByTagName('A');
  3.     for(var i=links.length-1; i>=0; --i)
  4.         if(links[i].className.indexOf("dangerous" ) != -1) {
  5.             // lien flaggé "dangereux"
  6.             links[i].onclick = function () {
  7.                 return confirm("Lien dangereux:\n"+this.title);
  8.             }
  9.         }
  10. }
  11. window.onload = function () {
  12.         changeLinks();
  13.     }


Un peu plus compliqué:
Tout d'abord, on récupère l'intégralité des liens (des éléments "A" pour être plus précis).
 
Pour chaque lien, on teste ensuite s'il a été marqué comme dangereux (càd si il y a "dangerous" dans sa liste de classes)
 
Puis, pour chaque lien dangereux on ajoute une confirmation de click (en mettant le title du lien dans le message, afin que l'utilisateur sache pour quelle raison le lien est dangereux).
 
De cette manière

  • Les utilisateurs avec JS sont prévenus proprement
  • Les utilisateurs sans JS peuvent quand même utiliser le lien.


Ensuite, pour ce genre de liens on peut imaginer une page intermédiaire jouant le rôle du confirm() pour les gens sans JS.
 
Pour ça, il suffirait de mettre cette page (de confirmation) comme lien par défaut, et de modifier le lien dans le Javascript (pour pointer directement sur la page de suppression quand le JS est activé, et donc que l'utilisateur passera par le confirm)


 
 
 
 
ok, c très clair .. je te remerci pour cet exemple concret.  
je m'en vais essayer sur le champ .
 

Reply

Marsh Posté le 06-11-2005 à 19:02:56   

Reply

Marsh Posté le 06-11-2005 à 19:04:09    

Et accessoirement ça fonctionne nickel sous Firefox 1.0, Internet Explorer 6 SP1 et Opera 8.5 :o
 
Et il est plus que probable que ça fonctionne tout aussi bien sous Firefox 1.5, IE6SP2, IE7, IE5.x, Safari et Konqueror :o

Message cité 1 fois
Message édité par masklinn le 06-11-2005 à 19:05:00

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-11-2005 à 19:45:59    

masklinn a écrit :

Et accessoirement ça fonctionne nickel sous Firefox 1.0, Internet Explorer 6 SP1 et Opera 8.5 :o
 
Et il est plus que probable que ça fonctionne tout aussi bien sous Firefox 1.5, IE6SP2, IE7, IE5.x, Safari et Konqueror :o


 
 
bon, ça fonctionne parfaitement aussi bien sous IE 6.0 que sous Firefox.
Seulement, la confirmation n'est demandée qu'une seule fois.  
Je m'explique : si l'on suppose que je dois supprimer plusieurs enregistrement sous une même page , alors, je demande une confirmation pour chacune de ces suppresions.  
alors, pour le premier, j'ai bien la demande de confirmation, mais pas pour le 2eme, et le reste. Peut être qu'il est judicieux de choisir une autre fonction que window.onload ???
 
qu'en penses tu ?

Reply

Marsh Posté le 06-11-2005 à 19:57:42    

airsupply a écrit :

bon, ça fonctionne parfaitement aussi bien sous IE 6.0 que sous Firefox.
Seulement, la confirmation n'est demandée qu'une seule fois.  
Je m'explique : si l'on suppose que je dois supprimer plusieurs enregistrement sous une même page , alors, je demande une confirmation pour chacune de ces suppresions.


[:petrus dei]
 
Je crains légèrement le pire là, je peux avoir un peu plus de code ou une demo de la page [:petrus75]

Citation :

Peut être qu'il est judicieux de choisir une autre fonction que window.onload ???
 
qu'en penses tu ?


Que tu n'as peut être pas compris à quoi sert window.onload


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-11-2005 à 20:09:05    

masklinn a écrit :

[:petrus dei]
 
Je crains légèrement le pire là, je peux avoir un peu plus de code ou une demo de la page [:petrus75]

Citation :

Peut être qu'il est judicieux de choisir une autre fonction que window.onload ???
 
qu'en penses tu ?


Que tu n'as peut être pas compris à quoi sert window.onload


 
 
le bout de code que je viens d'utiliser, c'est le tien.  
c simple. tu as une page en php contenant une requete mysql . Le résultat est affiché en sortie en forme de plusieurs enregistrement.
pour chaque enregistrement, je souhaite pouvoir le supprimer. ta méthode fonctionne en appliquant donc à chaque enregistrement un lien HREF avec la class choisie (ici, dangerous :-) ) .  pour une première suppression et ce quelque soit l'enregistrement, cela fonctionne, j'ai bien une demande de confirmation. Seulement, pour le reste des enregistrements, niette ..; il supprimer sans demande de confirmation.
 
malheureusement, je ne pas donner accès de l'extérieur . je suis désolé

Reply

Marsh Posté le 06-11-2005 à 20:52:41    

Ok, super, mais tu la fais comment la suppression? [:itm]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-11-2005 à 21:43:18    

masklinn a écrit :

Ok, super, mais tu la fais comment la suppression? [:itm]


 
dans la nouvelle URL choisie, je passe des variables en paramètres qui seront utilisées dans un autre script pour actionner les requetes de suppression ..

Reply

Marsh Posté le 06-11-2005 à 22:02:01    

hum...
 
Je t'explique. Là tout de suite, ma boule de cristal est au garage en réparation, donc avec des infos aussi précise que "ça marche pas" je vais pas pouvoir faire grand chose tu sais.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-11-2005 à 22:21:04    

AMHA faut que tu revois tes notions de client/serveur...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed