[Jslib] Re: object hacking
Pete Collins
petejc@optonline.net
Tue, 02 Jul 2002 08:17:05 -0400
I checked it into contrib. As soon as i have time i can format it into a
lib and move it over to utils.
Please we need more contributions and contributors to jslib.
Thanks!
--pete
DanielWang5168@aol.com wrote:
> an useful function to extract a list of properties from an object
>
> //
> ******************************************************************************
>
> *********
>
> const getFunct = 1;
> const getVar = 2;
> const getConst = 3;
> const getXULstuff = 10;
> function hackObject(obj,what) {
> result = '';
> switch (what) {
> case getFunct:
> for (i in obj) {
> try {
> if (typeof obj[i] == 'function') {
> result = result +
> '\t<tr>\n' +
> '\t\t<td><b>function</b></td>\n' +
> '\t\t<td>' + i + '</td>\n' +
> '\t</tr>\n';
> } // if
> }
> catch(error) {
> }
> } // for
> break;
> case getVar:
> for (i in obj) {
> try {
> if ( (i[0] >= 'a') && (typeof obj[i] != 'function') ) {
> result = result +
> '\t<tr>\n' +
> '\t\t<td><b>' + typeof(obj[i]) + '</b></td>\n' +
> '\t\t<td>' + i + '</td>\n' +
> '\t</tr>\n';
> } // if
> }
> catch(error) {
> }
> } // for
> break;
> case getConst:
> for (i in obj) {
> try {
> if (i[0] < 'a') {
> result = result +
> '\t<tr>\n' +
> '\t\t<td><span title="' + obj[i] + '">' + i + '<
> /span></td>\n' +
> '\t</tr>\n';
> } // if
> }
> catch(error) {
> }
> } // for
> break;
> case getXULstuff:
> for (i in obj) {
> try {
> blah = typeof(obj[i]); // force exception for XUL
> properties
> }
> catch(error) {
> result = result +
> '\t<tr>\n' +
> '\t\t<td><span title="">' + i + '</span></td>\n' +
> '\t</tr>\n';
> }
> } // for
> break;
> } // switch
> return result;
> } hackObject()
>
> //
> ******************************************************************************
>
> *********
>
> sample code using the function
> s = hackObject(obj,getXULstuff);
> a.document.open();
> a.document.writeln('<table>');
> a.document.writeln(s);
> a.document.writeln('</table>');
> a.document.close();
>
> //
> ******************************************************************************
>
> *********
>
> attached is a html file of object definition for DOMNodeInserted
>
>
> ------------------------------------------------------------------------
>
> Functions
>
> *function* stopPropagation
> *function* preventDefault
> *function* initEvent
> *function* initMutationEvent
> *function* preventBubble
> *function* preventCapture
> *function* initUIEvent
> *function* initKeyEvent
> *function* initMouseEvent
> *function* getPreventDefault
>
> Properties
>
> *string* type
> *object* target
> *object* currentTarget
> *number* eventPhase
> *boolean* bubbles
> *boolean* cancelable
> *number* timeStamp
> *object* relatedNode
> *string* prevValue
> *string* newValue
> *string* attrName
> *number* attrChange
>
> Constants
>
> *number* CAPTURING_PHASE
> *number* AT_TARGET
> *number* BUBBLING_PHASE
> *number* MODIFICATION
> *number* ADDITION
> *number* REMOVAL
> *number* MOUSEDOWN
> *number* MOUSEUP
> *number* MOUSEOVER
> *number* MOUSEOUT
> *number* MOUSEMOVE
> *number* MOUSEDRAG
> *number* CLICK
> *number* DBLCLICK
> *number* KEYDOWN
> *number* KEYUP
> *number* KEYPRESS
> *number* DRAGDROP
> *number* FOCUS
> *number* BLUR
> *number* SELECT
> *number* CHANGE
> *number* RESET
> *number* SUBMIT
> *number* SCROLL
> *number* LOAD
> *number* UNLOAD
> *number* XFER_DONE
> *number* ABORT
> *number* ERROR
> *number* LOCATE
> *number* MOVE
> *number* RESIZE
> *number* FORWARD
> *number* HELP
> *number* BACK
> *number* TEXT
> *number* ALT_MASK
> *number* CONTROL_MASK
> *number* SHIFT_MASK
> *number* META_MASK
> *number* DOM_VK_CANCEL
> *number* DOM_VK_HELP
> *number* DOM_VK_BACK_SPACE
> *number* DOM_VK_TAB
> *number* DOM_VK_CLEAR
> *number* DOM_VK_RETURN
> *number* DOM_VK_ENTER
> *number* DOM_VK_SHIFT
> *number* DOM_VK_CONTROL
> *number* DOM_VK_ALT
> *number* DOM_VK_PAUSE
> *number* DOM_VK_CAPS_LOCK
> *number* DOM_VK_ESCAPE
> *number* DOM_VK_SPACE
> *number* DOM_VK_PAGE_UP
> *number* DOM_VK_PAGE_DOWN
> *number* DOM_VK_END
> *number* DOM_VK_HOME
> *number* DOM_VK_LEFT
> *number* DOM_VK_UP
> *number* DOM_VK_RIGHT
> *number* DOM_VK_DOWN
> *number* DOM_VK_PRINTSCREEN
> *number* DOM_VK_INSERT
> *number* DOM_VK_DELETE
> *number* DOM_VK_0
> *number* DOM_VK_1
> *number* DOM_VK_2
> *number* DOM_VK_3
> *number* DOM_VK_4
> *number* DOM_VK_5
> *number* DOM_VK_6
> *number* DOM_VK_7
> *number* DOM_VK_8
> *number* DOM_VK_9
> *number* DOM_VK_SEMICOLON
> *number* DOM_VK_EQUALS
> *number* DOM_VK_A
> *number* DOM_VK_B
> *number* DOM_VK_C
> *number* DOM_VK_D
> *number* DOM_VK_E
> *number* DOM_VK_F
> *number* DOM_VK_G
> *number* DOM_VK_H
> *number* DOM_VK_I
> *number* DOM_VK_J
> *number* DOM_VK_K
> *number* DOM_VK_L
> *number* DOM_VK_M
> *number* DOM_VK_N
> *number* DOM_VK_O
> *number* DOM_VK_P
> *number* DOM_VK_Q
> *number* DOM_VK_R
> *number* DOM_VK_S
> *number* DOM_VK_T
> *number* DOM_VK_U
> *number* DOM_VK_V
> *number* DOM_VK_W
> *number* DOM_VK_X
> *number* DOM_VK_Y
> *number* DOM_VK_Z
> *number* DOM_VK_NUMPAD0
> *number* DOM_VK_NUMPAD1
> *number* DOM_VK_NUMPAD2
> *number* DOM_VK_NUMPAD3
> *number* DOM_VK_NUMPAD4
> *number* DOM_VK_NUMPAD5
> *number* DOM_VK_NUMPAD6
> *number* DOM_VK_NUMPAD7
> *number* DOM_VK_NUMPAD8
> *number* DOM_VK_NUMPAD9
> *number* DOM_VK_MULTIPLY
> *number* DOM_VK_ADD
> *number* DOM_VK_SEPARATOR
> *number* DOM_VK_SUBTRACT
> *number* DOM_VK_DECIMAL
> *number* DOM_VK_DIVIDE
> *number* DOM_VK_F1
> *number* DOM_VK_F2
> *number* DOM_VK_F3
> *number* DOM_VK_F4
> *number* DOM_VK_F5
> *number* DOM_VK_F6
> *number* DOM_VK_F7
> *number* DOM_VK_F8
> *number* DOM_VK_F9
> *number* DOM_VK_F10
> *number* DOM_VK_F11
> *number* DOM_VK_F12
> *number* DOM_VK_F13
> *number* DOM_VK_F14
> *number* DOM_VK_F15
> *number* DOM_VK_F16
> *number* DOM_VK_F17
> *number* DOM_VK_F18
> *number* DOM_VK_F19
> *number* DOM_VK_F20
> *number* DOM_VK_F21
> *number* DOM_VK_F22
> *number* DOM_VK_F23
> *number* DOM_VK_F24
> *number* DOM_VK_NUM_LOCK
> *number* DOM_VK_SCROLL_LOCK
> *number* DOM_VK_COMMA
> *number* DOM_VK_PERIOD
> *number* DOM_VK_SLASH
> *number* DOM_VK_BACK_QUOTE
> *number* DOM_VK_OPEN_BRACKET
> *number* DOM_VK_BACK_SLASH
> *number* DOM_VK_CLOSE_BRACKET
> *number* DOM_VK_QUOTE
> *number* DOM_VK_META
> *number* SCROLL_PAGE_UP
> *number* SCROLL_PAGE_DOWN
>
> XUL specific properties
>
> originalTarget
> view
> detail
> charCode
> keyCode
> altKey
> ctrlKey
> shiftKey
> metaKey
> screenX
> screenY
> clientX
> clientY
> button
> relatedTarget
> layerX
> layerY
> pageX
> pageY
> which
> rangeParent
> rangeOffset
> cancelBubble
> isChar
>