Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Annuler une fonction au chargement d'une page

6 réponses
Avatar
gewix
Bonjour =E0 tous,

j'aimerais avoir votre avis et des =E9claircissement sur un pb.

J'ai une fonction qui remplace tous les href:
--------------------------------------
function fff(){
var aaa =3D document.getElementsByTagName("a");
for(i=3D0;i<=3Daaa.length;i++){
aaa[i].href=3D'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=E9e, je
puisse annuler cette fonction.
J'ai bien essayer de faire un
window.onunload=3Dfff;
mais =E7a ne fonctionne pas.
seul un window.onload fonctionne.

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

Merci pour vos lumi=E8res.

6 réponses

Avatar
SAM

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

Avatar
gewix
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.


Avatar
SAM

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>

Avatar
gewix
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.


Avatar
SAM

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;"

<a href="tzimboumbom.jpg" onclick="return false;" rel="manchin[petit]">

à 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

Avatar
gewix
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;"

<a href="tzimboumbom.jpg" onclick="return false;" rel="manchin[petit ]">

à 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.