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

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.

  1. Lala

    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

  2. BlackY

    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

  3. Lala

    Szia!

    Köszi, hogy megnézted, akkor jófelé indultam el :)
    Lassan összeáll a kép.

    Lala

  4. BlackY

    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

  5. Harderszerzőblog.harder.hu

    Javítottam a cikket, most nézzétek meg.

  6. BlackY

    Így ok, köszi :)

    BlackY

Van hozzáfűznivalód? Írj nekem közvetlenül.

Kapcsolat