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>