HTML elemek tulajdonságainak lekérdezése

HTML elemek tulajdonságainak lekérdezése
2006-01-12T15:22:52+01:00
2006-02-01T22:05:43+01:00
2022-10-28T21:40:41+02:00
MartinKnight
Hi!

Van egy WebBrowser-em, amiben megjelenítek egy akármilyen oldalt, és a browser Document objektumából szépen kiszedegetem, hogy milyen elemeket is tartalmaz. Na, ezzel idáig nem is volt baj, a GetElementsByType-al ez ment is, de most arra lenne szükségem, hogy minden kigyűjtött elem minden tulajdonságát összeszedjem! De hogyan kérdezzem le egy elemtől, hogy milyen tulajdonságai vannak?? Meg lehet ezt egyáltalán csinálni? Azt elvileg lehetne, hogy if input akkor ez, if frame, akkor az, de ez 20 év, mire megírom, meg ronda is, meg különben is, csak van vmi elegánsabb megoldás... mondjuk egy GetElementsAttrib() függvény...
Help mí plíz!
Mutasd a teljes hozzászólást!
Micu javaslata egy szép hosszu, átfogó listát szolgáltat az adott elemről.
Ügyes!
Lehet, hogy neked csak az attributes tömbben levő dolgok kellenek?
Megkapod, ha szépen végigjárod a tömböt pl. így:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> <title>Attrib Test</title> <script language="JavaScript" type="text/JavaScript"> function getAttrib(elem) { var attrib_tomb = document.getElementById(elem).attributes; var tulajdonsagok = ""; for ( i=0; i<attrib_tomb.length; i++ ) { tulajdonsagok += "attributum neve: " + attrib_tomb[i].name + " értéke: " + attrib_tomb[i].value + "\n"; } alert (tulajdonsagok); } </script> </head> <body> <label for="textfield">label</label> <input name="en_inputom" type="text" id="en_inputom" value="init value" size="10" maxlength="20"> <input type="button" name="Button" value="Kérem az attributumokat!" onClick="return getAttrib('en_inputom');"> </body> </html>
Mutasd a teljes hozzászólást!

  • pl. ilyen listára gondoltál?

    <input type="text" name="a" value="a" id="d"><br> <script> for (elem in document.getElementById('d')) { try { document.write(elem+"="+eval("document.getElementById('d')."+elem)+"<br>") } catch (e) { } } </script>


    Persze ahol [object] van, ott meg kellene hívnod egy ugyan ilyet.
    Mutasd a teljes hozzászólást!
  • Micu javaslata egy szép hosszu, átfogó listát szolgáltat az adott elemről.
    Ügyes!
    Lehet, hogy neked csak az attributes tömbben levő dolgok kellenek?
    Megkapod, ha szépen végigjárod a tömböt pl. így:
    <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> <title>Attrib Test</title> <script language="JavaScript" type="text/JavaScript"> function getAttrib(elem) { var attrib_tomb = document.getElementById(elem).attributes; var tulajdonsagok = ""; for ( i=0; i<attrib_tomb.length; i++ ) { tulajdonsagok += "attributum neve: " + attrib_tomb[i].name + " értéke: " + attrib_tomb[i].value + "\n"; } alert (tulajdonsagok); } </script> </head> <body> <label for="textfield">label</label> <input name="en_inputom" type="text" id="en_inputom" value="init value" size="10" maxlength="20"> <input type="button" name="Button" value="Kérem az attributumokat!" onClick="return getAttrib('en_inputom');"> </body> </html>
    Mutasd a teljes hozzászólást!
  • Sztem neki leginkább egy .NET-es webbrowser komponens-en belül a lehívott lapot kell vizsgálnia kívülről VB nyelven, tehát nem a HTML-ben túrkál.
    Jól gondolom, MartinKnight?
    Mutasd a teljes hozzászólást!
  • Bizony, bizony!
    Viszont lehet, hogy ez a GetElementsByID(X).Attributes dolog működne, vhogy így:

    WebBrowser.Document.GetElementsByTagName("INPUT").(0).Attributes

    Kis is próbálom rögvest, csak újra kell húzni a VS.net-et, mert tegnap kicsit leépült...
    Mutasd a teljes hozzászólást!
  • Dim h As System.Windows.Forms.HtmlElement h = WebBrowser1.Document.All.Item(1)

    Sztem probálkozz errefelé, a GetElementsByID-nál tudnod kéne az ID-t, itt meg csak túrkálhatsz az elemek közt. Van minden DOM-os cucc, pl: NextSibling, FirstChild, meg minden ami szem száj ingere, na már akinek...

    Legegyszerűbben: debugold, és csak egérrel ráállsz a változóra, és kilistázza minden tagját az objektumnak elég jól.
    Mutasd a teljes hozzászólást!
  • Hm...ez érdekes! Frankón kijönnek az attribútumok, de furcsamód duplán jönnek ki az elemek! Lekérem az itemeket, mondjuk van egy form, ami alatt van két input, és a két input-ot kiadja közvetlen a WebBrowser.Document alatt, és a WebBrowser.Document.Forms(0).Document alatt is...ez miért van???
    Az alapprobléma megoldva, jár is a pont érette, de ha még erre is tudnátok felelni... plíz!
    Mutasd a teljes hozzászólást!
  • Sztem azért, mint ahogy javascriptben is
    DOM 0 aszondja, hogy érd el az elemeidet document.forms[] , document.images[] stb. tömbökből, amit meg nem tudsz, azt ne is piszkáld. És vala DOM 0.

    DOM 1 aszondja, hogy érd el az elemeket id vagy name attribútum szerint document.all[] vagy document.getElementsByID()-val. És vala DOM 1.

    Így teremtette Isten a JS verzióit.

    Egyébként VB-ben indulj ki innen:
    WebBrowser1.Document.All.Item(1)
    és ugrálgass a firstchild meg nextsibling elemeken, és be is járhatod az egész HTML tartalmat.
    Mutasd a teljes hozzászólást!

  • Idáig szívtam vele, de az istennek nem sikerült összeraknom egy rekurzív függvénybe a Te módszeredet? Hogyan tudom a Document-től kezdve az utolsó attribútumig bejárni a fát, hogy mondjuk egy TreeView-be ilyet kapjak:

    Document
    +Form(0)
    +Input(0)
    -value
    -akármi
    Mutasd a teljes hozzászólást!
  • A pont azért postázódott!
    De nincs vmi konkrét javallatotok a HTML elemek listájának "fásítására"?
    Mutasd a teljes hozzászólást!
  • A pontot köszönöm.
    A .NET-hez nem értek, nem foglalkoztam vele. Itt lenne az ideje?
    Mutasd a teljes hozzászólást!
  • Lehet...akkor megoldhatnád a maradék problémámat...
    De így is köszi mindannyiótoknak!
    Mutasd a teljes hozzászólást!
  • Ez már önmagában is ösztönzően hat rám.

    Magam részéről szivesen.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd