| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| <!--************************************************************************--> |
| <!--* FireFox JavaScript Browser Object Dump *--> |
| <!--* *--> |
| <!--* Copyright 2007 IBM *--> |
| <!--* Bradley Childs (childsb@us.ibm.com) *--> |
| <!--************************************************************************--> |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
| <head> |
| <title>FireFox JavaScript Object Browser Dump</title> |
| <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> |
| <script type="text/javascript"> |
| // Netscape 6 (or Mozilla)? |
| |
| var objectInstance = new Array(); |
| |
| var objectName = new Array(); |
| |
| function displayString( value) { |
| document.writeln(value + "<br>"); |
| } |
| |
| function shouldExclude( nameOfElement) { |
| /* allows filtered values and exclude elements that are coming from this script */ |
| var excluded = [ "shouldExclude", "addRootDisplayElement", |
| "buildClasses", "getObjectName", "objectList", "objTypeArrays", |
| "rootElements", "nameArray", "isNS6", "getObjectSuperType", |
| "isKnownObject", "generateHTMLObjectTable", |
| "addElementToObject", "addToObjects", "getAllProperties", |
| "isArray", "isObject", "findProperties", "DOMViewerObj", |
| "DOMViewerName", "objectName", "objectInstance","aptana" ]; |
| var k; |
| for (k = 0; k < excluded.length; k++) { |
| if (nameOfElement == excluded[k]) |
| return true; |
| } |
| return false; |
| } |
| |
| function getSince() { |
| return "FireFox 2.0.0.3"; |
| } |
| |
| |
| function buildClasses() { |
| |
| var k; |
| for (k = 0; k < objectInstance.length; k++) { |
| var classObject; |
| try { |
| classObject = objectInstance[k]; |
| |
| } catch ( exception) {} |
| |
| |
| var superName = getObjectSuperTypeName(classObject); |
| var objectClassName = getObjectTypeName(classObject); |
| |
| //ea[ea.length] = classObjectName + ".prototype= " + superName; |
| //ea[ea.length] = "function " + classObjectName + "(){};"; |
| |
| displayString("/**"); |
| displayString(" * Object " + objectClassName); |
| displayString(" * @super " + superName); |
| displayString(" * @type constructor"); |
| displayString(" * @class " + objectClassName); |
| displayString(" * @since " + getSince()); |
| displayString("*/"); |
| |
| displayString(objectClassName + ".prototype=new " + superName + "();"); |
| displayString("function " + objectClassName + "(){};"); |
| |
| if((typeof classObject =="array") || classObject instanceof Array || objectClassName=="Array") continue; |
| |
| |
| /* get each objects properties */ |
| |
| var allprops = getAllProperties(classObject); |
| for(i = 0;i<allprops.length;i++) { |
| var propObjectName = allprops[i]; |
| var propObject; |
| try{ |
| propObject = classObject[propObjectName]; |
| if(propObject==null) propObject=null; |
| }catch(e){ |
| propObject=null; |
| } |
| if(isFinite(propObjectName)) continue; |
| |
| if(shouldExclude(propObjectName)) continue; |
| if(propObject!=null && (typeof propObject)=="function" && propObjectName!="constructor"){ |
| var functionType = getFunctionType(propObject); |
| |
| var argString = ""; |
| var t=0; |
| for(t=0;t<propObject.length;t++){ |
| var paramType = getObjectTypeName(propObject[t]); |
| |
| if(paramType==null || paramType=="null") paramType=""; |
| var paramName = paramType + "arg" + (t+1); |
| |
| argString += paramName + ((t+1)<propObject.length?",":""); |
| } |
| displayString("/**"); |
| displayString(" * function " + propObjectName + "(" + argString + ")"); |
| displayString(" * @type " + functionType); |
| for(t=0;t<propObject.length;t++){ |
| var paramType = getObjectTypeName(propObject[t]); |
| |
| var paramName; |
| |
| if(paramType==null || paramType=="null") |
| paramName= "arg" + (t+1); |
| else |
| paramName = paramType; |
| |
| if(paramType==null || paramType=="null") paramType="Object"; |
| |
| displayString(" * @param " + paramName + " " + paramType ); |
| |
| } |
| |
| displayString(" * @class " + objectClassName); |
| displayString(" * @since " + getSince()); |
| displayString("*/"); |
| }else if (false){ |
| |
| |
| }else{ |
| var primType = getObjectTypeName(propObject); |
| if(primType==null || primType=="null") primType="Object"; |
| var init = getInit(propObject); |
| displayString("/**"); |
| displayString(" * property " + propObjectName); |
| displayString(" * @type " + primType); |
| displayString(" * @class " + objectClassName); |
| displayString(" * @since " + getSince()); |
| displayString("*/"); |
| displayString(objectClassName + ".prototype." + propObjectName + "=" + init + ";"); |
| } |
| |
| |
| } |
| |
| } |
| } |
| |
| function getFunctionType(thefunction){ |
| return "---------Unknown Function Return-----------"; |
| } |
| |
| |
| function getInit(object){ |
| if(object instanceof String) return "\"\""; |
| if(object instanceof Boolean) return "false"; |
| if(object instanceof Number) return "0"; |
| |
| var typename = getObjectTypeName(object); |
| if(typename=="string") return "\"\""; |
| if(typename=="boolean") return "false"; |
| if(typename=="number") return "0"; |
| |
| if(typename==null || typename=="null") typename="Object"; |
| return "new " + typename + "()"; |
| } |
| |
| function getObjectTypeName( sibObject) { |
| |
| var typeofo = typeof sibObject; |
| |
| if(typeofo=="string") return "String"; |
| if(typeofo=="array") return "Array"; |
| if(typeofo=="boolean") return "Boolean"; |
| if(typeofo=="number") return "Number"; |
| |
| |
| if(isArray(sibObject)){ |
| return "Array"; |
| } |
| if(sibObject==null) return null; |
| var start, end, parentString; |
| // var objString = String(sibObject); |
| var tconstructor=null; |
| try{ |
| tconstructor = sibObject.constructor; |
| }catch(e){} |
| |
| var objString = String(tconstructor); |
| start = objString.indexOf("function Object()"); |
| if(start!=-1){ |
| objString = String(sibObject); |
| } |
| |
| |
| if (objString != null) { |
| start = (objString.indexOf("object") + 7); |
| end = objString.indexOf("]"); |
| if (start < end && start>7) { |
| parentString = objString.substring(start, end); |
| } else { |
| start = objString.indexOf("["); |
| end = objString.indexOf(" ", start); |
| var end2 = objString.indexOf("]", start); |
| if (start < end) { |
| parentString = objString.substring(start+1, end); |
| } else if (start < end2){ |
| parentString = objString.substring(start+1, end2); |
| }else{ |
| parentString = objString; |
| } |
| } |
| } |
| |
| return parentString; |
| //var constr; |
| //try{ |
| // constr = sibObject.constructor; |
| // return String(constr).replace("[","").replace("]",""); |
| //}catch(e){} |
| |
| } |
| |
| function getPropertyName( sibObject) { |
| var start, end, parentString; |
| var objString = String(sibObject); |
| |
| if (objString != null) { |
| start = (objString.indexOf("object") + 6); |
| end = objString.indexOf("]"); |
| if (start < end) { |
| parentString = objString.substring(start, end); |
| } else { |
| start = objString.indexOf("["); |
| end = objString.indexOf("]"); |
| if (start < end) { |
| parentString = objString.subString(start, end); |
| } else { |
| parentString = objString; |
| } |
| } |
| } |
| |
| return parentString; |
| |
| } |
| |
| function getObjectSuperTypeName( sibObject) { |
| |
| if(isArray(sibObject)){ |
| return "Array"; |
| }else{ |
| return "Object"; |
| } |
| //var subName = getObjectTypeName(sibObject); |
| //for(k=0;k<objectInstance.length;k++){ |
| // var props1 = getAllProperties(sibObject); |
| // var props2 = getAllProperties(objectInstance[k]); |
| // var superName = getObjectTypeName(objectInstance[k]); |
| // if(superName==subName) continue; |
| // if(compareArrays(props1,props2)){ |
| // var typeName = getObjectTypeName(props2); |
| // return typeName; |
| // } |
| |
| |
| } |
| |
| function compareArrays(subtype, supertype){ |
| if(supertype.length>subtype.length) return false; |
| |
| for(i=0;i<supertype.length;i++){ |
| var contains = false; |
| for(j=0;!contains && j<subtype.length;j++){ |
| if(subtype[j]==supertype[i]) contains=true; |
| } |
| if(!contains) return false; |
| } |
| } |
| |
| function generateHTMLObjectTable( DOMViewerObj, DOMViewerName) { |
| |
| findProperties(DOMViewerObj); |
| //var s = '<table>'; |
| //var i; |
| |
| //for (i = 0; i < rootElements.length; i++) { |
| // s += "<tr><td>" + new String(rootElements[i]) + "</td></tr>"; |
| //} |
| //s += "<tr><td><br><br></tr></td>" |
| |
| //newElms = |
| |
| buildClasses(); |
| |
| //for (i = 0; i < newElms.length; i++) { |
| // s += "<tr><td>" + new String(newElms[i]) + "</td></tr>"; |
| //} |
| //return s + "</table>" |
| } |
| |
| function addToObjects( newObject) { |
| var value, k; |
| if (newObject == null) |
| return false; |
| |
| if(newObject instanceof Array){ |
| return true; |
| } |
| |
| |
| value = getObjectTypeName(newObject); |
| |
| if(value.indexOf("ns")==0 && value!="nsXPCComponents") return false; |
| |
| |
| |
| if (shouldExclude(value)) |
| return false; |
| |
| for (k = 0; k < objectName.length; k++) { |
| if (objectName[k] == value) { |
| return false; |
| } |
| } |
| |
| objectName[objectName.length] = value; |
| objectInstance[objectInstance.length] = newObject; |
| return true; |
| } |
| |
| function getAllProperties( object) { |
| var propertyList = new Array(); |
| try { |
| for (property in object) |
| propertyList[propertyList.length] = property; |
| } catch ( exception) { |
| } |
| return propertyList; |
| } |
| |
| function isArray( valueObject) { |
| return valueObject instanceof Array; |
| var isArray = false; |
| try { |
| isArray = (valueObject != null && valueObject.length >= 0 && !(valueObject instanceof Function)); |
| } catch ( exception) { |
| isArray = false; |
| } |
| return isArray; |
| } |
| |
| function isObject( elem) { |
| return ((elem != null) && (elem instanceof Object) && !(elem instanceof Function)); |
| } |
| |
| |
| |
| function findProperties( obj) { |
| |
| var allProperties, i; |
| |
| |
| allProperties = getAllProperties(obj); |
| |
| |
| for (i = 0; i < allProperties.length; i++) { |
| var theObject; |
| |
| try{ |
| theObject = obj[allProperties[i]]; |
| }catch(e){ |
| |
| } |
| if (isObject(theObject) && addToObjects(theObject) ) { |
| findProperties(theObject); |
| } else { |
| continue; |
| } |
| |
| } |
| } |
| </script> |
| </head> |
| <body> |
| |
| <h3>Browsers JavaScript Elements:</h3> |
| |
| <script type="text/javascript"> |
| // Show properties for the specified object in the opening window. Default to |
| // the document if no object is specified. |
| |
| var DOMViewerObj = this; |
| |
| var DOMViewerName = ""; |
| |
| if (!DOMViewerObj) { |
| DOMViewerObj = window.opener.document; |
| DOMViewerName = "document"; |
| } |
| |
| generateHTMLObjectTable(DOMViewerObj, DOMViewerName); |
| </script> |
| |
| </body> |
| </html> |