5.7.3.2 beforeClose

5.7.3.2.1 Déclenchement

Le document va être remplacé par un autre document. Soit pour un changement de rendu (passage de édition à consultation) ou un changement de document (mais pas lors de la sauvegarde ni de la suppression).

L'événement n'est pas déclenchée si l'url de la page est changée ("unload" de la page).

L'événement est déclenché par l'historique du navigateur si des changements de document ont été réalisés.

5.7.3.2.2 Éléments passés au callback

event
objet événement standard de jQuery,
currentDocumentObject
un objet document décrivant le document courant.
nextDocumentObject
un objet document décrivant le document suivant.
customData
l'objet customClientData, cet objet peut-être modifié si besoin.

5.7.3.2.3 Annulable

Oui. Dans ce cas, le document courant reste affiché et le document suivant n'est pas affiché.

5.7.3.2.4 Exemple

Cet exemple

  • ajoute au ready du document (fonction addAnimalEvents) un écouteur sur l'événement beforeClose,
  • l'écouteur (fonction preventCloseAnimal) empêche la fermeture du document si

    • l'attribut zoo_title est différent de fermer
    • et le mode est edition.

    Dans ce cas, il affiche un message pour avertir l'utilisateur qu'il doit changer la valeur.

window.dcp.document.documentController("addEventListener",
    "ready",
    {
        "name": "addAnimalEvent",
        "documentCheck": function(documentObject) {
            return documentObject.family.name === "ANIMAL";
        }
    }, function addAnimalEvents() {
        this.documentController("addEventListener",
        "beforeClose",
        {
            "name": "preventClose.animal",
            "documentCheck": function(document) {
                return document.family.name === "ANIMAL";
            }
        },
        function preventCloseAnimal(event, currentDocumentObject) {
            if (currentDocumentObject.renderMode === "edit" &&
                this.documentController("getValue", "zoo_title").value !== "fermer") {
                event.preventDefault();
                this.documentController("showMessage", {
                    "type" : "error",
                    "message" : "If you want close the doc, change the title to fermer"
                });
            }
        });
    }
);
×