Seite 1 von 2
html / Java Script ?
Verfasst: 23.11.2009 17:18
von amiga123
Hallo
Gibt es eine Möglichkeit den in einer HTML Seite enthalten java Script code auszuführen um an die Ergebnisse zu kommen. Man kann ja die Seite mit > ReceiveHTTPFile < wunderbar auslesen und auswerten. Ist jedoch java enthalten wird nicht das Ergebnis angezeigt sondern nur der Java Code.
Über > webgadget < wird das Ergebnis ja auch auf dem Bildschirm angezeigt, nur wie kommt man da an die Daten???
Weiß jemand Rat ??
Mfg Amgia
Re: html / Java Script ?
Verfasst: 23.11.2009 17:33
von Kiffi
amiga123 hat geschrieben:Weiß jemand Rat ??
generell kannst Du JavaScript im WebGadget ausführen lassen:
http://www.purebasic.fr/english/viewtop ... 12&t=36394
kniffelig wird es wohl, die entsprechenden Übergabeparameter zusammenzupfriemeln.
Was willst Du denn genau machen?
Grüße ... Kiffi
P.S.:
Java != JavaScript
Re: html / Java Script ?
Verfasst: 23.11.2009 17:45
von amiga123
Also es geht mir darum die Daten die auf der Webseite angezeigt werden auszuwerten.
Wenn du z.B. diesen
http://www.solarlog-home4.de/jirka/banner.html aufrufst bekommst du einen Banner mit verschieden Daten angezeigt. Jetzt kann ich mir zwar den Quellcode der Seite anschauen und einige Daten auswerten, die die mich allerdings interessieren werden durch JavaScript angezeigt und nur der Code ist zu sehen.
Beispielsweise ist Aktuell und Heute nicht als Zahlenwert vorhanden sondern nur als Javascript. Ich würde halt gerne diese Daten bekommen, wie auch immer.
Mit > webgadget < bekomme ich die zwar auf den Bildschirm komme aber immer noch nicht an die Zahlen ran.
Gruß Amiga123
Re: html / Java Script ?
Verfasst: 23.11.2009 17:50
von TomS
Das geht nicht so einfach, da der JS Cod erst ausgeführt wird, nachdem die Seite bei dir auf dem Rechner liegt. Deswegen siehst du auch nur den JS-Code und nicht das Ergebnis von document.write bspw.
Also es gibt imho zwei Möglichkeiten.
1. Irgendwie ins Webgadget einen Hook, der die die Update-Messages von JS abgreift und weiterleiten kann. Wie das geht? Keine Ahnung.
2. Einen JS-Parser schreiben. Das geht realtiv leicht, wenn du nur bestimmte Befehle brauchst, weil du nur bestimmte Seiten abrufst und ziemlich schwer, wenn du die gesamte JS-Bibliothek interpretieren willst.
Re: html / Java Script ?
Verfasst: 23.11.2009 19:44
von amiga123
JS-Parser ??
Gibt es da irgenwo was, wie man sich in das Thema reinarbeiten kann.
Gruß amiga123
Re: html / Java Script ?
Verfasst: 23.11.2009 20:17
von Kiffi
amiga123 hat geschrieben:JS-Parser ??
Gibt es da irgenwo was, wie man sich in das Thema reinarbeiten kann.
Re: html / Java Script ?
Verfasst: 23.11.2009 20:48
von TomS
@Kiffi: Der Code von srod führt doch JS aus, gibt allerdings nichts zurück, oder hab ich was übersehen? Damit kann man zwar bspw mit document.write() einen Text ins Webgadget schreiben.
Dieser Code schreibt zwar "hallo welt" ins Webgadget, allerdings nur wieder sichtbar auf dem Bildschirm. Amiga123 möchte aber den String "hallo welt" erhalten um ihn in PB zu verwenden.
Gesucht ist also so etwas in der Art:
Code: Alles auswählen
js_code.s = "var one = 1; var two=2; var three = one+two;"
Debug JS("one",js_code)
Debug JS("two",js_code)
Debug JS("three",js_code)
>> 1
>> 2
>> 3
Re: html / Java Script ?
Verfasst: 23.11.2009 22:05
von Kiffi
TomS hat geschrieben:@Kiffi: Der Code von srod führt doch JS aus, gibt allerdings nichts zurück, oder hab ich was übersehen?
nee, das ist schon so korrekt. Um etwas zurückzugeben,
muss man den Code ein wenig umschreiben:
Code: Alles auswählen
IncludePath #PB_Compiler_Home + "srod\comateplus\"
XIncludeFile "comateplus.pbi"
Define.COMateObject WebObject
Procedure.i ExecuteJavaScript(gadget, command$)
Protected browser.COMateObject, documentDispatch.COMateObject, script.COMateObject
Protected result
browser = COMate_WrapCOMObject(GetWindowLong_(GadgetID(gadget), #GWL_USERDATA))
If browser
documentDispatch = browser\GetObjectProperty("Document")
If documentDispatch
script = documentDispatch\GetObjectProperty("script")
If script
result = script\getIntegerProperty("eval('" + command$ + "')")
script\release()
EndIf
documentDispatch\release()
EndIf
browser\release()
EndIf
ProcedureReturn result
EndProcedure
Define.s HTML
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 150, 40, "Deep thought")
WebGadget(0, 0, 0, 0, 0, "")
ButtonGadget(1,10,10,130,20,"Frage")
Repeat
Event = WaitWindowEvent();
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1 ; ButtonGadget
HTML = "<html>"
HTML + "<head>"
HTML + "<script type='text/javascript'>"
HTML + " function getAnswer() {"
HTML + " return 42;"
HTML + " }"
HTML + "</script>"
HTML + "<title></title>"
HTML + "</head>"
HTML + "<body></body>"
HTML + "</html>"
SetGadgetItemText(0, #PB_Web_HtmlCode, HTML)
Repeat
While WindowEvent() : Delay(1) : Wend
Until GetGadgetAttribute(0, #PB_Web_Busy) = 0
MessageRequester("Antwort", Str(ExecuteJavaScript(0, "getAnswer()")) )
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
Until GetAsyncKeyState_(#VK_ESCAPE)
EndIf
amiga123 fragte ja nach Informationen, in die
er sich
einarbeiten kann.
Und die habe ich geliefert. Der Rest ist (wie ich bereits schrieb) Pfriemelsarbeit und
da muss er sich selber reinknien.
Grüße ... Kiffi
Re: html / Java Script ?
Verfasst: 23.11.2009 22:21
von TomS
TomS hat geschrieben:Gesucht ist also so etwas in der Art:
Perfekt

Re: html / Java Script ?
Verfasst: 24.11.2009 09:10
von six1
Hi,
bei deinem Beispiel gehst du davon aus, dass die Variablen "statisch" bereits als Konstanten im Script vorhanden sind.
Die Realität ist aber wohl, dass Inhalte oft z.B. über Ajax nachgeladen werden.