Aki írt már JavaScript kódot tudja, hogy a nyelv rengeteg objektummal dolgozik, és minden objektumnak vannak böngésző-specifikus tulajdonságai, metódusai. Ilyen káoszban nem nehéz eltévedni, ráadásul nem mindig találjuk meg a Neten az adott objektum leírását. Ebben a helyzetben segíthet ez a kis script, ami Mozilla alatt kiírja az objektum tulajdonságait és metódusait. Explorer alatt (a function típus hiánya miatt) a függvényeket is tulajdonságként listázza, ezért ajánlott az FX használata.
function lister(obj)
{
function isNumeric(value)
{
for(var i = 0; i < value.length; i++)
{
if(value.charCodeAt(i) < 48 || value.charCodeAt(i) > 57)
{
return false;
}
}
return false;
}
if(typeof obj != 'object')
{
return;
}
try
{
objName = obj.toString();
}
catch(e)
{
return;
}
var methods = new Array();
var properties = new Array();
for(var i in obj)
{
try
{
if(typeof obj[i] == 'function')
{
methods[methods.length] = i;
continue;
}
else
{
try
{
properties[properties.length] = new Array(i, obj[i]);
}
catch (e)
{
/* alert(e); */
}
}
}
catch(e)
{
/* alert(e) */
}
}
methods.sort();
properties.sort();
methodsString = '';
propertiesString = '';
for(var i in methods)
{
methodsString += objName + '.' + methods[i] + '()\n';
}
for(var i in properties)
{
if(isNumeric(properties[i][0]) == false)
{
propertiesString += objName + '.' + properties[i][0] + ' = ' + properties[i][1] + '\n';
}
}
var w = window.open("", "w", "width=560,height=450,resizable=yes,scrollbars=yes");
w.document.write("<h1>Methods</h1>< pre >" + methodsString + "</ pre ><h1>Properties</h1>< pre >" + propertiesString + "</ pre >");
w.document.close();
}
Megjegyzés: a kód végén lévő < pre > kacsacsőreihez nem kell a space (72. sorban), sajnos a wordpress-hez használt "geshi syntax higlight" úgy értelmezi máskülönben, hogy vége a mintakódnak. Ezt a rövid kódot egy fájlba elmentve (és a HTML fájlunkban valahol meghívva) máris használhatjuk a lister() függvény meghívásával. Pl.:
x = document.createElement('span');
lister(x);
Az ennek hatására megnyíló ablakban a következőt találjuk: #### Methods
[object HTMLSpanElement].appendChild()
[object HTMLSpanElement].blur()
[object HTMLSpanElement].cloneNode()
[object HTMLSpanElement].compareDocumentPosition()
[object HTMLSpanElement].dispatchEvent()
[object HTMLSpanElement].focus()
[object HTMLSpanElement].getAttribute()
[object HTMLSpanElement].getAttributeNS()
[object HTMLSpanElement].getAttributeNode()
[object HTMLSpanElement].getAttributeNodeNS()
[object HTMLSpanElement].getElementsByTagName()
[object HTMLSpanElement].getElementsByTagNameNS()
[object HTMLSpanElement].getFeature()
[object HTMLSpanElement].getUserData()
[object HTMLSpanElement].hasAttribute()
[object HTMLSpanElement].hasAttributeNS()
[object HTMLSpanElement].hasAttributes()
[object HTMLSpanElement].hasChildNodes()
[object HTMLSpanElement].insertBefore()
[object HTMLSpanElement].isDefaultNamespace()
[object HTMLSpanElement].isEqualNode()
[object HTMLSpanElement].isSameNode()
[object HTMLSpanElement].isSupported()
[object HTMLSpanElement].lookupNamespaceURI()
[object HTMLSpanElement].lookupPrefix()
[object HTMLSpanElement].normalize()
[object HTMLSpanElement].removeAttribute()
[object HTMLSpanElement].removeAttributeNS()
[object HTMLSpanElement].removeAttributeNode()
[object HTMLSpanElement].removeChild()
[object HTMLSpanElement].removeEventListener()
[object HTMLSpanElement].replaceChild()
[object HTMLSpanElement].setAttribute()
[object HTMLSpanElement].setAttributeNS()
[object HTMLSpanElement].setAttributeNode()
[object HTMLSpanElement].setAttributeNodeNS()
[object HTMLSpanElement].setUserData()
Properties
[object HTMLSpanElement].ATTRIBUTE_NODE = 2
[object HTMLSpanElement].CDATA_SECTION_NODE = 4
[object HTMLSpanElement].COMMENT_NODE = 8
[object HTMLSpanElement].DOCUMENT_FRAGMENT_NODE = 11
[object HTMLSpanElement].DOCUMENT_NODE = 9
[object HTMLSpanElement].DOCUMENT_POSITION_CONTAINED_BY = 16
[object HTMLSpanElement].DOCUMENT_POSITION_CONTAINS = 8
[object HTMLSpanElement].DOCUMENT_POSITION_DISCONNECTED = 1
[object HTMLSpanElement].DOCUMENT_POSITION_FOLLOWING = 4
[object HTMLSpanElement].DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 32
[object HTMLSpanElement].DOCUMENT_POSITION_PRECEDING = 2
[object HTMLSpanElement].DOCUMENT_TYPE_NODE = 10
[object HTMLSpanElement].ELEMENT_NODE = 1
[object HTMLSpanElement].ENTITY_NODE = 6
[object HTMLSpanElement].ENTITY_REFERENCE_NODE = 5
[object HTMLSpanElement].NOTATION_NODE = 12
[object HTMLSpanElement].PROCESSING_INSTRUCTION_NODE = 7
[object HTMLSpanElement].TEXT_NODE = 3
[object HTMLSpanElement].attributes = [object NamedNodeMap]
[object HTMLSpanElement].baseURI = file:///c:/www/test.html
[object HTMLSpanElement].childNodes = [object NodeList]
[object HTMLSpanElement].className =
[object HTMLSpanElement].clientHeight = 0
[object HTMLSpanElement].clientWidth = 0
[object HTMLSpanElement].dir =
[object HTMLSpanElement].firstChild = null
[object HTMLSpanElement].id =
[object HTMLSpanElement].innerHTML =
[object HTMLSpanElement].lang =
[object HTMLSpanElement].lastChild = null
[object HTMLSpanElement].localName = SPAN
[object HTMLSpanElement].namespaceURI = null
[object HTMLSpanElement].nextSibling = null
[object HTMLSpanElement].nodeName = SPAN
[object HTMLSpanElement].nodeType = 1
[object HTMLSpanElement].nodeValue = null
[object HTMLSpanElement].offsetHeight = 0
[object HTMLSpanElement].offsetLeft = 0
[object HTMLSpanElement].offsetParent = null
[object HTMLSpanElement].offsetTop = 0
[object HTMLSpanElement].offsetWidth = 0
[object HTMLSpanElement].ownerDocument = [object HTMLDocument]
[object HTMLSpanElement].parentNode = null
[object HTMLSpanElement].prefix = null
[object HTMLSpanElement].previousSibling = null
[object HTMLSpanElement].scrollHeight = 0
[object HTMLSpanElement].scrollLeft = 0
[object HTMLSpanElement].scrollTop = 0
[object HTMLSpanElement].scrollWidth = 0
[object HTMLSpanElement].style = [object CSSStyleDeclaration]
[object HTMLSpanElement].tabIndex = -1
[object HTMLSpanElement].tagName = SPAN
[object HTMLSpanElement].textContent =
[object HTMLSpanElement].title =
Azért így valamivel könnyebb, mint fejben tartani ezt mind ;)
Harder
Profil
Korábbi hozzászólások (6)
A régi blogon érkezett hozzászólások archívuma. Új hozzászólást már nem lehet írni.
Szia BlackY!
Nekem a script úgy jelenik meg, hogy kettévágja egy reklám. Tudnátok ez ellen tenni valamit?
Pont ilyesmiben vagyok érdekelt és sokat segítene nekem a scripted.
Köszi,
Lala
Szia!
Sajnos az oldal frissítése óta nincs jogom módosítani a régi cikkeket. Úgyhogy copy-pasteld ki a kódot a szövegdobozból, aztán azonnal utána ezt:
Properties" + propertiesString);
w.document.close();
}
Így ha jól látom mennie kell, ha mégsem, akkor szólj!
Itt amúgy a Google-n kívül a Wordpress is hibás ebbent, azt hiszi, hogy csak azért, hogy van egy h1 egy pre-ben, már az író a hülye, és ő tudja jobban, kijavítja (így megszakad a pre), innentől kezdve a Google reklámot meg simán beszúrhatja oda (mert ugye minden html tagon kívül van így...)
BlackY
Szia!
Köszi, hogy megnézted, akkor jófelé indultam el :)
Lassan összeáll a kép.
Lala
Megint rosszul copy-pasteltem, úgy tűnik WP lecserélte a "-t ”-re (pár fokban utóbbi meg van döntve), úgyhogy a hibámat javítandó:
http://blacky.extra.hu/tutorialhu/lister.html
(A végén levő "lister(document);"-el csak mutatom, hogy működik :), az kiszedhető )
BlackY
Javítottam a cikket, most nézzétek meg.
Így ok, köszi :)
BlackY
Van hozzáfűznivalód? Írj nekem közvetlenül.
Kapcsolat