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.
Kiffi hat geschrieben:generell kannst Du JavaScript im WebGadget ausführen lassen:

http://www.purebasic.fr/english/viewtop ... 12&t=36394

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.

Code: Alles auswählen

var hallo = 'hallo welt';
document.write(hallo);
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:
Kiffi hat geschrieben:
Perfekt :allright:

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.