2010-04-18 5 views
2

Compte tenu de la fonction suivante:Hors clique dans un DIV d'un window.onbeforeunload

window.onbeforeunload= function() { 
    if (CKEDITOR.instances.stuff.getData().length > 0 && oktoquit == false) { 
     return "You have unsaved changes. Click Cancel now, then 'Save' to save them. Click OK now to discard them."; 
    } 
}; 

Je voudrais un moyen d'exclure cette fonction d'exécuter si l'utilisateur clique sur un lien dans un div avec un ID:

<div id="ignore me"><a href="">blah</a><a href="">blah</a><a href="">blah</a></div> 

Des idées?

** Mise à jour Il s'avère que le code suivant pour la recherche du site est à l'origine du problème. mais pourquoi?

$("#searchresults li").live('click', function(e) { 
    if (e.target.nodeName != "a") { 
     window.location = $(this).find('a').attr('href'); 
    } 
}); 
+0

Il a quelque chose à voir avec en direct, si je change que pour lier le problème disparaît. Pourquoi? – AnApprentice

Répondre

1

Vous pouvez le faire:

$("#ignoreMe").click(function() { 
    window.onbeforeunload = null; 
}); 

J'ai changé votre carte d'identité pour être ignoreMe il est donc valide, mais vous obtenez le point :) A en juger par votre question, vous voudrez peut-être #ignoreMe a pour un sélecteur, Si vous voulez exclure tout lien à l'intérieur de ce div de l'exécution du gestionnaire, ce que vous voulez, utilisez simplement ce sélecteur.

+0

Très intéressant ... Alors ce code irait-il avant ou après le code que j'ai ci-dessus ??? ce qui signifie en plus? Ou est-ce que les 2 groupes de code peuvent mien au-dessus et les vôtres et combinés d'une manière plus intelligente et plus propre? – AnApprentice

+0

@nobosh - Oui, il devrait être en plus. Il n'y a pas vraiment de meilleur moyen de les combiner, il suffit de placer ce code dans un '$ (function() {}), donc il fonctionne sur' document.ready' ... l'avant/après n'a pas d'importance, puisque le code à l'intérieur du gestionnaire de clic ne s'exécutera pas jusqu'à ce qu'un lien soit cliqué. –

+0

@nick, j'ai essayé le code, le problème est maintenant window.onbeforeunload ne fonctionne jamais, le bouton de retour, etc. ne déclenche pas l'invite pour avertir l'utilisateur des modifications non enregistrées. Je pense que ce serait génial si c'était une fonction, une fonction développée sur ce qui était collé dans la question, mais il y avait une instruction if à l'intérieur, disant si on cliquait dessus, ignorait et continuait? Cela a-t-il du sens? des idées? – AnApprentice

0

window.top.onbeforeunload cela ne tient pas la iFrame CKEditor qui fait le travail

Questions connexes