Webbrowsercontrol: GetElementById bei Javascript-Element

17/08/2008 - 12:00 von Nexpert | Report spam
Also, ich lade in meine Webbrowseranwendung eine Seite, in der
folgendes Javascript aufgerufen wird:


function checkUNA()
{
var un = document.getElementById('id').value;
var sc = document.createElement('script');
sc.src = '/un.phtml?id=' + un + '&st=' + (new Date()).getTime();
document.body.appendChild(sc);
return false;
}

Diese Funktion prüft auf dem Server die Verfügbarkeit der Eingabe
eines Usernamens un, das im Feld mit der Id "id" eingegeben wurde und
erzeugt ein Feldelemend mit dem Namen "unstat". in dieses Feldelement
wird mit einer zweiten Funktion "verfügbar" oder "nicht verfügbar"
geschrieben.


function setUNA(stat)
{
document.getElementById('unstat').innerHTML = (stat ? '<span
style="color:" & _
"green;">verfügbar</span>' : '<span style="color: red;">nicht
verfügbar</span>');
}

Greife ich nun mit getElementById auf dieses Feld "unstat" zu, dann
bekomme ich für die ganzen Properties keine Werte zurück. Ich möchte
nàmlich rauslesen, was das Javascript zurückgegeben hat. Aufgerufen
wird das Script CheckUNA über einen Button, dessen Code ich
gleichfalls angebe:


<TD><INPUT id=id onkeyup=updateUNA() maxLength
onchange=updateUNA()
onload=updateUNA() size name=id> <INPUT id=unch
onclick="return" & _
"checkUNA()" type=button value="Verfügbarkeit überprüfen"
name=unch>
<B><SPAN id=unstat name="unstat"></SPAN></B> </TD>

Wie da SetUNA aufgerufen wird, weiß ich nicht.
Die Seite, um die es hier geht, heißt: http://www.playok.com/intl/de/register.phtml
Dort möchte ich testhalber mehrere Nicknamen auf Verfügbarkeit
überprüfen.

Mit GetElementById greife ich auf die Seite zu, nachdem ich die
Eingabefelder gesetzt und den Button betàtigt habe:


If frmMain.tcMain.TabCount > 0 Then
oWb = GetCurrentWebBrowser(frmMain.tcMain)
oDoc = oWb.Document
oTxtUser = oDoc.GetElementById("Id")
oTxtUser.InnerText = "strive"
oTxtPwd = oDoc.GetElementById("pw1")
oTxtPwdAgain = oDoc.GetElementById("pw2")
oTxtPwd.InnerText = "Test"
oTxtPwdAgain.InnerText = "Test"
oCmdCheck = oDoc.GetElementById("unch")
oCmdCheck.InvokeMember("onclick")
oTextVerfügbar = oDoc.GetElementById("unstat")


oTextVefügbar existiert dann zwar, hat aber keine Werte, die ich
brauchen kann. Das Javascript funktioniert auch, in der Seite steht
auch der richtige Wert "verfügbar" bzw. "nicht verfügbar"

Ich wollte das deshalb hier herein stellen, weil ich bei der Suche auf
einige interessante Beitràge zu meinem Thema gestoßen bin, die mir
aber noch nicht weiterhelfen. Jedenfalls scheint mir, daß der Wert in
einem Label (for id) geschrieben wird. ABer ich kann diesen Label im
Document nicht finden.
 

Lesen sie die antworten

#1 Gerold Mittelstädt
17/08/2008 - 14:50 | Warnen spam
Nexpert schrieb:
^^^^^^^
Script-Kiddie? ;)

Also, ich lade in meine Webbrowseranwendung eine Seite, in der
folgendes Javascript aufgerufen wird:

[http://www.playok.com/intl/de/register.phtml]

Diese Funktion prüft auf dem Server die Verfügbarkeit der Eingabe
eines Usernamens un, das im Feld mit der Id "id" eingegeben wurde und
erzeugt ein Feldelemend mit dem Namen "unstat". in dieses Feldelement
wird mit einer zweiten Funktion "verfügbar" oder "nicht verfügbar"
geschrieben.

[http://www.playok.com/intl/de/register.phtml]

Greife ich nun mit getElementById auf dieses Feld "unstat" zu, dann
bekomme ich für die ganzen Properties keine Werte zurück. Ich möchte
nàmlich rauslesen, was das Javascript zurückgegeben hat. Aufgerufen
wird das Script CheckUNA über einen Button, dessen Code ich
gleichfalls angebe:

[http://www.playok.com/intl/de/register.phtml]

Wie da SetUNA aufgerufen wird, weiß ich nicht.
Die Seite, um die es hier geht, heißt: http://www.playok.com/intl/de/register.phtml
Dort möchte ich testhalber mehrere Nicknamen auf Verfügbarkeit
überprüfen.



So viel Aufwand für eine einmalige Registrierung, wo doch schon ein GUI
bereitsteht?

Mit GetElementById greife ich auf die Seite zu, nachdem ich die
Eingabefelder gesetzt und den Button betàtigt habe:


If frmMain.tcMain.TabCount > 0 Then
oWb = GetCurrentWebBrowser(frmMain.tcMain)
oDoc = oWb.Document
oTxtUser = oDoc.GetElementById("Id")
oTxtUser.InnerText = "strive"
oTxtPwd = oDoc.GetElementById("pw1")
oTxtPwdAgain = oDoc.GetElementById("pw2")
oTxtPwd.InnerText = "Test"
oTxtPwdAgain.InnerText = "Test"
oCmdCheck = oDoc.GetElementById("unch")
oCmdCheck.InvokeMember("onclick")
oTextVerfügbar = oDoc.GetElementById("unstat")



Faszinierend.. Was auch immer Du da machst.. Von hinten druch die Brust
3 km am Auge vorbei..
Hat btw. überhaupt nichts mit ASP.NET zu tun.

Ich wollte das deshalb hier herein stellen, weil ich bei der Suche auf
einige interessante Beitràge zu meinem Thema gestoßen bin, die mir
aber noch nicht weiterhelfen. Jedenfalls scheint mir, daß der Wert in
einem Label (for id) geschrieben wird. ABer ich kann diesen Label im
Document nicht finden.



Die Lösung wàre letztlich wohl ein Dreizeiler. Was Du vorhast ist aber
eindeutig ein Angriff auf die Seite, daher keine Unterstützung meinerseits.

Viele Grüße!

Ähnliche fragen