html / Java Script ?

Anfängerfragen zum Programmieren mit PureBasic.
amiga123
Beiträge: 88
Registriert: 17.02.2009 18:05

html / Java Script ?

Beitrag 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
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: html / Java Script ?

Beitrag 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
a²+b²=mc²
amiga123
Beiträge: 88
Registriert: 17.02.2009 18:05

Re: html / Java Script ?

Beitrag 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
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: html / Java Script ?

Beitrag 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.
amiga123
Beiträge: 88
Registriert: 17.02.2009 18:05

Re: html / Java Script ?

Beitrag von amiga123 »

JS-Parser ??

Gibt es da irgenwo was, wie man sich in das Thema reinarbeiten kann.

Gruß amiga123
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: html / Java Script ?

Beitrag 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
a²+b²=mc²
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: html / Java Script ?

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: html / Java Script ?

Beitrag 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
a²+b²=mc²
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: html / Java Script ?

Beitrag von TomS »

TomS hat geschrieben:Gesucht ist also so etwas in der Art:
Kiffi hat geschrieben:
Perfekt :allright:
six1
Beiträge: 31
Registriert: 10.11.2009 14:51
Kontaktdaten:

Re: html / Java Script ?

Beitrag 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.
Gruß, Michael

There are 10 types of people, those that understand binary and those that don't!
Antworten