Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1810 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  preventDefault() avec Firefox :(

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

preventDefault() avec Firefox :(

n°2229460
clockover
That's the life
Posté le 29-05-2014 à 01:27:30  profilanswer
 

J'ai un code très simple via du javascript mais je n'obtient pas ce que je veux avec Firefox :(  
Je suis assez débutant en Javascript donc je ne pense pas que cela soit bien méchant mais comme j'ai un peu tout essayé... Je viens demander de l'aide.
 
En fait, je veux simplement que le lien appelle via ajax une page php qui execute une requête en arrière plan mais que la page sur laquelle se trouve le visiteur ne change pas.
Sous IE et Safari ca fonctionne exactement comme je veux déjà mais pas sous Firefox. Sous Firefox, la navigateur va sur la page indiquée en href du lien.
 
Côté HTML généré par du PHP

Code :
  1. include('../functions.js');
  2. echo '<a id="fv-'.$row['id'].'"  href="index.php?account=0&un='.$row['id'].'" onClick="fv2un('.$row['id'].')"><span class="blue fa fa-heart"></span></a>';


 
Et dans le fichier functions.js

Code :
  1. function fv2un(id)
  2. {
  3. preventDefault();
  4. var link = document.getElementById('fv-'+id).href;
  5. $.ajax({ //Make the ajax request
  6.  url: link,
  7.  cache: false
  8. }).done(function( html ) { //On complete run tooltip code
  9. //Display tooltip code goes here, returned text is variable html
  10. });


 
Merci pour votre temps :)

Message cité 1 fois
Message édité par clockover le 29-05-2014 à 01:27:58
mood
Publicité
Posté le 29-05-2014 à 01:27:30  profilanswer
 

n°2229501
tpierron
Posté le 29-05-2014 à 20:28:49  profilanswer
 

clockover a écrit :


Code :
  1. function fv2un(id)
  2. {
  3. preventDefault();
  4. var link = document.getElementById('fv-'+id).href;
  5. $.ajax({ //Make the ajax request
  6.  url: link,
  7.  cache: false
  8. }).done(function( html ) { //On complete run tooltip code
  9. //Display tooltip code goes here, returned text is variable html
  10. });




 
Si tu veux annuler l'action de clic sur le lien, il faut renvoyer "false" dans l'attribut onclick, du genre:
 

Code :
  1. include('../functions.js');
  2. echo '<a id="fv-'.$row['id'].'"  href="index.php?account=0&un='.$row['id'].'" onClick="fv2un('.$row['id'].'); return false">
  3. <span class="blue fa fa-heart"></span></a>';


 
Et vire le preventDefault() dans le code javascript, ça ne sert à rien.

n°2229503
clockover
That's the life
Posté le 29-05-2014 à 21:28:17  profilanswer
 

Merci pour ce retour.  :)  
J'avais déjà essayé le return false.
Mais Firefox ne change pas de comportement, il continue d'aller sur la page en Href :(
 
Je viens de réessayer comme tu me l'a indiqué parce que moi je mettais avec un ; à la fin.

Code :
  1. echo '<a id="fv-'.$row['id'].'"  href="index.php?account=0&un='.$row['id'].'" onClick="fv2un('.$row['id'].'); return false;"><span class="blue fa fa-heart"></span></a>';


 
Mais pareil :(


Message édité par clockover le 29-05-2014 à 21:29:46
n°2229504
clockover
That's the life
Posté le 29-05-2014 à 21:39:08  profilanswer
 

Arf non cool :)
En enlevant le preventDefault(); ca semble marcher.
Je vais tester avec d'autres naviguateurs!  
 
Merci beaucoup tpierron

n°2229548
czh
Posté le 30-05-2014 à 12:24:06  profilanswer
 

preventDefault c'est une méthode de l'objet event.
 
"preventDefault();" tout seul, ça fait planter le code au milieu de l'exécution et donc le "return false" n'est jamais atteint.
 
Pour être certain que le "return false;" se fasse quelque soit les erreurs d'exécution du code situé avant, on utilise des try-catch : try { monCodeVaPeutEtrePlanter(); } catch (err) {}; return false;
 
 

n°2229687
gatsu35
Blablaté par Harko
Posté le 02-06-2014 à 07:56:41  profilanswer
 

mais preventDefault est une méthode de Event
Donc normalement dans ton eventhandler (ta fonction quoi) tu dois recevoir en paramètre l'objet Event :  

Code :
  1. function fv2un(id,e)
  2. {
  3. e.preventDefault();
  4. var link = document.getElementById('fv-'+id).href;
  5. $.ajax({ //Make the ajax request
  6. url: link,
  7. cache: false
  8. }).done(function( html ) { //On complete run tooltip code
  9. //Display tooltip code goes here, returned text is variable html
  10. });


 
Et le HTML :  

Code :
  1. onClick="fv2un('.$row['id'].', event);"


---------------
Blablaté par Harko
n°2232927
clockover
That's the life
Posté le 08-07-2014 à 03:16:25  profilanswer
 

Merci :) Je suis pas encore super à l'aise avec Javascript. Je trouve ça plutôt un peu indigeste.

n°2232928
gatsu35
Blablaté par Harko
Posté le 08-07-2014 à 06:36:11  profilanswer
 

en même temps tu l'utilises un peu n'importe comment et dans ton code HTML aussi.
 
Essaye de bien séparer les choses et de ne laisser aucun code JS dans ton HTML (ie: les onclicks et autres biduleries, doivent être initiées dans le JS)


---------------
Blablaté par Harko
n°2232937
rufo
Pas me confondre avec Lycos!
Posté le 08-07-2014 à 10:52:37  profilanswer
 

+1 pour le code javascript non intrusif dans le html. Il faut le mettre dans un fichier js appelé dans le <head>
 
Et sur l'événement onload du <body>, tu appelles la fonction d'initialisation du ou de tes scripts js.
 
Si y'a des événements à ajouter sur des balises (dans ton cas, des <a> ), tu fais un truc du genre :

Code :
  1. if (window.attachEvent) {
  2.    // IE
  3.    MaBaliseAvecUnID.attachEvent("onclick", MonEventClick);
  4. } else {
  5.    // FF
  6.    MaBaliseAvecUnID.addEventListener("click", MonEventClick, false);
  7. }


Voilà l'idée. Ainsi, ta le html d'un côté pour la structure du document, le css d'un autre côté pour la mise en page/forme et le js de l'autre, pour améliorer l'ergonomie ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2233000
clockover
That's the life
Posté le 08-07-2014 à 19:08:02  profilanswer
 

Oui en fait c'est déjà un peu le cas, mon include était là au milieu pour l'exemple :).
Meric pour les conseils :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  preventDefault() avec Firefox :(

 

Sujets relatifs
mapping php yii firefox[résolu]bxslider a:hover firefox bug opacité
Add-on Firefox pour charger des pages phpprobleme d'incompatibilité CSS entre firefox et chrome
script ok sur firefox, opera, etc.. pas sur IEChrome et Firefox, oui, sur IE, non???
[Résolu] Formulaire sur Firefox et ChromeProbleme firefox propriété scale
Impossible d'afficher des galeries sous firefoxCréation d'une routine Pour Firefox ou Chrome
Plus de sujets relatifs à : preventDefault() avec Firefox :(


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR