Annotation of kupuMPIWG/doc/BEFOREUNLOAD.txt, revision 1.1

1.1     ! dwinter     1: =================
        !             2: BeforeUnload Tool
        !             3: =================
        !             4: 
        !             5: The BeforeUnload tool will check forms when navigating away from a
        !             6: page and will warn a user if they are about to lost changes and give
        !             7: them the option to remain editing the page.
        !             8: 
        !             9: How to use the tool
        !            10: ===================
        !            11: 
        !            12: The tool will install itself automatically provided the javascript
        !            13: is loaded, and provided no other handler has been installed for the
        !            14: window.onbeforeunload event.
        !            15: 
        !            16: To test for the presence of the tool and use it if it is present use
        !            17: the following code::
        !            18: 
        !            19:     var beforeunloadTool = window.onbeforeunload && window.onbeforeunload.tool;
        !            20:     if (beforeunloadTool) { ... };
        !            21: 
        !            22: Although the tool is installed by default, it does not check any
        !            23: forms unless they are added. Use the addForm method to add a single
        !            24: form or addForms method to add multiple forms. When a form is added,
        !            25: its onsubmit method will be hooked by the tool: if your form needs to
        !            26: perform its own onsubmit processing you must replace this event
        !            27: after calling addForm.
        !            28: 
        !            29: The following input field types may be checked::
        !            30: 
        !            31:     <input type="text">
        !            32:     <textarea>
        !            33:     <input type="radio">
        !            34:     <input type="checkbox">
        !            35:     <input type="password">
        !            36:     <select>
        !            37:     <select multiple>
        !            38:     <input type="hidden">
        !            39: 
        !            40: Single selection fields where nothing was initially selected are
        !            41: considered to have changed if the first entry is not selected. Single
        !            42: selection fields where multiple entries were marked as selected
        !            43: initially are always considered changed.
        !            44: 
        !            45: Field which do not have a `name` attribute are assumed to be
        !            46: client-side only (as they are not submitted to the server) and are
        !            47: ignored when checking.
        !            48: 
        !            49: Note that hidden fields are checked for changes although a bug in
        !            50: Mozilla means that this is done by storing their original value when
        !            51: the handler is notified of the form.
        !            52: 
        !            53: These field types are always assumed to be unchanged::
        !            54: 
        !            55:     <input type="button">
        !            56:     <input type="file">
        !            57:     <input type="image">
        !            58:     <input type="reset">
        !            59:     <input type="submit">
        !            60: 
        !            61: Handler functions return false to indicate there is no change to be
        !            62: lost, true to indicate that something has changed and the default
        !            63: message should be displayed, or they may return a string to show a
        !            64: custom message. Once a handler function has returned a value other
        !            65: than false no other handler functions are called.
        !            66: 
        !            67: API
        !            68: ===
        !            69: 
        !            70: Global variables
        !            71: ----------------
        !            72: 
        !            73: None. The BeforeUnload tool does not create or modify any global
        !            74: javascript variables. The only way to access it is through the
        !            75: onbeforeunload event of the window object.
        !            76: 
        !            77: 
        !            78: Methods
        !            79: -------
        !            80: 
        !            81: isAnyFormChanged()
        !            82: ++++++++++++++++++
        !            83: 
        !            84: Calls isElementChanged() for all watched forms and returns the first non-false
        !            85: value. This is the first handler function called when the page is
        !            86: unloading.
        !            87: 
        !            88: addHandler(fn)
        !            89: ++++++++++++++
        !            90: 
        !            91: Appends another handler function to be called when the page is
        !            92: unloading. The handler should not assume anything about the value of
        !            93: 'this' when it is called.
        !            94: 
        !            95: Example::
        !            96: 
        !            97:         var initialBody = ibody.innerHTML;
        !            98:         beforeunloadTool.addHandler(function() {
        !            99:             return ibody.innerHTML != initialBody;
        !           100:         });
        !           101: 
        !           102: 
        !           103: onsubmit()
        !           104: ++++++++++
        !           105: 
        !           106: This method is used as the default form.onsubmit event. If you replace
        !           107: form.onsubmit you should call beforeunloadTool.onsubmit() after
        !           108: validating the form.
        !           109: 
        !           110: addForm(form)
        !           111: +++++++++++++
        !           112: 
        !           113: Enables checking for a single form and sets the form's onsubmit handler.
        !           114: 
        !           115: addForms(el1, el2, ...)
        !           116: +++++++++++++++++++++++
        !           117: 
        !           118: Finds all forms which are the specified elements or children of the
        !           119: elements at any depth and enables checking for those forms.
        !           120: 
        !           121: removeForms(el1, el2, ...)
        !           122: ++++++++++++++++++++++++++
        !           123: 
        !           124: Finds all forms in the parameters and disables checking for those
        !           125: forms.
        !           126: 
        !           127: isElementChanged(element)
        !           128: +++++++++++++++++++++++++
        !           129: 
        !           130: Returns true (or a string) if the specified element has changed, false
        !           131: if it has not. element may be a form or a control on form.
        !           132: 
        !           133: Properties
        !           134: ----------
        !           135: 
        !           136: submitting
        !           137: ++++++++++
        !           138: 
        !           139: Set true by the default form onsubmit handler. If you cancel form
        !           140: submission you must set it false.
        !           141: 
        !           142: chkId
        !           143: +++++
        !           144: 
        !           145: beforeunloadTool.chkId is an object which may contain methods whose
        !           146: names are the same as the ids of form controls. By default there are
        !           147: no such methods. Add a method if you wish to override checking for a
        !           148: single control. the method should return true or a string if the field
        !           149: has changed, false if it has not.
        !           150: 
        !           151: For example, to ignore a control which is only used client-side::
        !           152: 
        !           153:    beforeunloadTool.chkId['kupu-tb-styles'] = function() { return false; }
        !           154: 
        !           155: chkType
        !           156: +++++++
        !           157: 
        !           158: This property contains methods which check a field based on its 'type'
        !           159: attribute. For example, to turn off checking for all radio buttons::
        !           160: 
        !           161:    beforeunloadTool.chkType['radio'] = function() { return false; }
        !           162: 
        !           163: The chkType method is not called if a matching chkId method is found.
        !           164: 
        !           165: message
        !           166: +++++++
        !           167: 
        !           168: This string is displayed if a handler function returns true.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>