Annuler une fonction au chargement d'une page

Le
gewix
Bonjour à tous,

j'aimerais avoir votre avis et des éclaircissement sur un pb.

J'ai une fonction qui remplace tous les href:
--
function fff(){
var aaa = document.getElementsByTagName("a");
for(i=0;i<=aaa.length;i++){
aaa[i].href='javascript:;';
}
}
-
Je fais cela pour que si la page n'a pas encore fini de charger toutes
les images, on ne puisse pas cliquer et donc se retrouver sur une page
xyz.

Par contre, je voudrais que, une fois que la page soit chargée, je
puisse annuler cette fonction.
J'ai bien essayer de faire un
window.onunload=fff;
mais ça ne fonctionne pas.
seul un window.onload fonctionne.

Quelqu'un sait il comment faire pour que une fois la page chargée,
"jannule" la fonction fff ?

Merci pour vos lumières.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
SAM
Le #1686421

J'ai une fonction qui remplace tous les href:
--------------------------------------
function fff(){
var aaa = document.getElementsByTagName("a");
for(i=0;i<ªa.length;i++){
aaa[i].href='javascript:;';
}
}
-------------------------------------
Je fais cela pour que si la page n'a pas encore fini de charger toutes
les images, on ne puisse pas cliquer et donc se retrouver sur une page
xyz.


He ben c'est pas futé ça ... y a plus de lien ...
et comment les remettre maintenant ? hein ?


à mettre juste avant </body>

<script type="text/javascript">
var A = document.links;
for(var i=0, L=A.length; i<L; i++)
A[i].onclick= function() { return false; }
window.onload = function() {
for(var i=0, L=A.length; i<L; i++)
A[i].onclick= function() { return true; }
}
</script>
</body>

normalement le onload ne se déclenche qu'à la dernière image chargée
(à vérifier)


--
sm

gewix
Le #1688235
On 19 mar, 13:32, SAM wrote:



J'ai une fonction qui remplace tous les href:
--------------------------------------
function fff(){
           var aaa = document.getElementsByTagName("a");
           for(i=0;i<ªa.length;i++){
           aaa[i].href='javascript:;';
           }
   }
-------------------------------------
Je fais cela pour que si la page n'a pas encore fini de charger toutes
les images, on ne puisse pas cliquer et donc se retrouver sur une page
xyz.


He ben c'est pas futé ça ... y a plus de lien ...
et comment les remettre maintenant ? hein ?

à mettre juste avant </body>

<script type="text/javascript">
var A = document.links;
for(var i=0, L=A.length; i<L; i++)
A[i].onclick= function() { return false; }
window.onload = function() {
   for(var i=0, L=A.length; i<L; i++)
   A[i].onclick= function() { return true; }}

</script>
</body>

normalement le onload ne se déclenche qu'à la dernière image charg ée
(à vérifier)

--
sm


Ta solution est géniale et fonctionne très bien.
Cependant elle entre en conflit avec un script qui se nomme greybox
(cf. http://groups.google.fr/group/greybox?hl=fr )
Je chercherai à éventuellement rajouter quelque chose directement dans
greybox pour neutraliser le click si la page n'est pas entièrement
chargée.

Merci mille fois encore.


SAM
Le #1688824

Ta solution est géniale et fonctionne très bien.
Cependant elle entre en conflit avec un script qui se nomme greybox
(cf. http://groups.google.fr/group/greybox?hl=fr )
Je chercherai à éventuellement rajouter quelque chose directement dans
greybox pour neutraliser le click si la page n'est pas entièrement
chargée.


pas regardé mais ...


<script type="text/javascript">

function ajout_click(el, myFunction) {
if (el.addEventListener) {
el.addEventListener ("click",myFunction,false);
}
else if (el.attachEvent) {
el.attachEvent ("onclick",myFunction);
}
else {
el.onclick = myFunction;
}
}

function suppr_click(el, myFunction) {
if (el.removeEventListener) {
el.removeEventListener ("click",myFunction,false);
}
else if (el.detachEvent) {
el.detachEvent ("onclick",myFunction);
}
else {
el.onclick = '';
}
}
function noHref { return false;}
var A = document.links;
for(var i=0, L=A.length; i<L; i++)
ajout_click(A[i], noHref);
window.onload = function() {
for(var i=0, L=A.length; i<L; i++)
suppr_click(A[i], noHref);
}
</script>
</body>

pas de garantie que ça fonctionne
pas de garantie que le truc popup ne fonctionne pas quand même



variante 1 :

<script type="text/javascript">
var A = document.links;
var L = [];
for(var i=0, L=A.length; i<L; i++) {
L[i] = A[i].href;
A[i].href = '';
}
window.onload = function() {
for(var i=0, n=A.length; i<n; i++)
A[i].href = L[i]; }
}
</script>
</body>



variante 2 :

<script type="text/javascript">
var A = document.links;
var L = [];
cree = function (href, rel) {
this.href = href;
this.rel = rel;
}
for(var i=0, n=A.length; i<n; i++) {
L[i] = new cree(A[i].href,A[i].rel);
if(A[i].rel) A[i].rel = '';
if(A[i].href) A[i].href = '#';
}
window.onload = function() {
for(var i=0, n=A.length; i<n; i++) {
if(L[i].rel) A[i].rel = L[i].rel;
if(L[i].href) A[i].href = L[i].href
}
}
</script>
</body>

gewix
Le #1690532
On 19 mar, 16:55, SAM wrote:



Ta solution est géniale et fonctionne très bien.
Cependant elle entre en conflit avec un script qui se nomme greybox
(cf.http://groups.google.fr/group/greybox?hl=fr)
Je chercherai à éventuellement rajouter quelque chose directement da ns
greybox pour neutraliser le click si la page n'est pas entièrement
chargée.


pas regardé mais ...

<script type="text/javascript">

function ajout_click(el, myFunction) {
if (el.addEventListener) {
    el.addEventListener ("click",myFunction,false);
    }
else if (el.attachEvent) {
    el.attachEvent ("onclick",myFunction);
    }
else {
    el.onclick = myFunction;
    }

}

function suppr_click(el, myFunction) {
if (el.removeEventListener) {
    el.removeEventListener ("click",myFunction,false);
    }
else if (el.detachEvent) {
    el.detachEvent ("onclick",myFunction);
    }
else {
    el.onclick = '';
    }}

function noHref { return false;}
var A = document.links;
for(var i=0, L=A.length; i<L; i++)
  ajout_click(A[i], noHref);
window.onload = function() {
   for(var i=0, L=A.length; i<L; i++)
   suppr_click(A[i], noHref);}

</script>
</body>

pas de garantie que ça fonctionne
pas de garantie que le truc popup ne fonctionne pas quand même

variante 1 :

<script type="text/javascript">
var A = document.links;
var L = [];
for(var i=0, L=A.length; i<L; i++) {
  L[i] = A[i].href;
  A[i].href = '';}

window.onload = function() {
   for(var i=0, n=A.length; i<n; i++)
   A[i].href = L[i]; }}

</script>
</body>

variante 2 :

<script type="text/javascript">
var A = document.links;
var L = [];
cree = function (href, rel) {
  this.href = href;
  this.rel = rel;
  }
for(var i=0, n=A.length; i<n; i++) {
   L[i] = new cree(A[i].href,A[i].rel);
     if(A[i].rel) A[i].rel = '';
     if(A[i].href) A[i].href = '#';
     }
window.onload = function() {
   for(var i=0, n=A.length; i<n; i++) {
     if(L[i].rel) A[i].rel = L[i].rel;
     if(L[i].href) A[i].href = L[i].href
     }}

</script>
</body>


Merci pour l'avancé dans le dév, j'ai testé mais ça ne fonctionne pa s.
Pour être plus précis, j'essaie de cliquer sur une image, ça me lance
quand même le lien!
j'essaie d'avancer moi même sur le sujet.
j'ai essayé aussi de mettre carrément sur les lien un onload mais j'ai
mal dû l'implémenter.


SAM
Le #1721831

Merci pour l'avancé dans le dév, j'ai testé mais ça ne fonctionne pas.
Pour être plus précis, j'essaie de cliquer sur une image, ça me lance
quand même le lien!


Je n'ai pas encore regardé ton truc-bidule de popup mais j'imagine qu'il
se lance en tout début
puis, sans doute au onload, repasse sur tous les liens à la recherche de
l'attribut 'rel' qui sert à lui expliquer quel type de popup tu veux
pour cette image et il en profite pour y glisser un onclick.

Essaie de glisser à la main dans chaque lien vers image :
onclick="return false;"


à mon idée, le truc-bidule saura annuler les onclicks entrés manuellement.


j'ai essayé aussi de mettre carrément sur les lien un onload mais j'ai
mal dû l'implémenter.


onload ne fait rien dans un lien
(un lien ne tarde pas à se charger : c'est du texte)

à la rigueur dans une image
(il parait que tous les brouteurs ne connaissent pas, mais tous les
miens si)

--
sm

gewix
Le #1845192
On 19 mar, 20:45, SAM wrote:



Merci pour l'avancé dans le dév, j'ai testé mais ça ne fonctionn e pas.
Pour être plus précis, j'essaie de cliquer sur une image, ça me la nce
quand même le lien!


Je n'ai pas encore regardé ton truc-bidule de popup mais j'imagine qu'il
se lance en tout début
puis, sans doute au onload, repasse sur tous les liens à la recherche de
l'attribut 'rel' qui sert à lui expliquer quel type de popup tu veux
pour cette image et il en profite pour y glisser un onclick.

Essaie de glisser à la main dans chaque lien vers image :
   onclick="return false;"


à mon idée, le truc-bidule saura annuler les onclicks entrés manuell ement.

j'ai essayé aussi de mettre carrément sur les lien un onload mais j' ai
mal dû l'implémenter.


onload ne fait rien dans un lien
(un lien ne tarde pas à se charger : c'est du texte)

à la rigueur dans une image
(il parait que tous les brouteurs ne connaissent pas, mais tous les
miens si)

--
sm


Génial, tu es génial, il fallait réfléchir et tu l'as fait
admirablement;
effectivement, le onlick = false sur le lien est annulé par le
javascript qui au chargement complet de la page prend la main sur les
évènements = donc, ça fonctionne correctement.


Publicité
Poster une réponse
Anonyme