_IE Div Problem

  • Ich bin mir bewusst, dass es bereits sehr viele Threads zu dem Thema IE gibt. Viele davon sind auch überflüssig und doppelt. Allerdings habe ich kein Thema gefunden, was mein Problem behandelt (ich suche jetzt schon seid ca. 6 Stunden deshalb ist es schon so spät. Es lässt mir einfach keine Ruhe :D ).

    Und zwar:

    Auf dieser Seite ist jeweils immer 1 Banner. Wenn ich ihn mit "_IEAction($oSubmit, "click")" oder "_IEImgClick" anklicke öffnet sich zwar der Link, allerdings funktioniert die Banner-Rotation nicht (Dass die Zahl auf der rechten Seite runter zählt, funktioniert nur wenn man auch eingeloggt ist: von daher jetzt zu vernachlässigen). Es geht um folgenden Code:

    Code
    <div id='contentr' align=left style='cursor:pointer; height:60px; width:468px;' onClick="gotourl('?AAADDDBZZECZAZZACABAAZZZZAEAZAZA=MQ==&CS=CCFCCACCCFCCCBCCCCCECCCDCCCCCECC&show=&noaff=true&message=');" onMouseUp='setCSession();'><a href='http://www.x-oo.com/banner/auktionen.html' target='_blank'><img border='0' src='http://www.x-oo.com/banner/auktionen.gif'></a></div>

    Wie man sehen kann muss man an dieser Stelle zwei Events auslösen. Allerdings geht das nicht mit $X.fireEvent, weil das kein Objekt ist!?

    Natürlich könnte ich es auch mit MouseClick machen, allerdings muss dann der Browser aktiv sein und es funktioniert dann auch bei den verschiedenen IE-Versionen nicht unbedingt.

    2 Mal editiert, zuletzt von ColdPhoenix (3. November 2007 um 03:40)

  • so richtig verstanden hab ichs jetzt nicht wobei du hilfe willst...
    kannst doch einfach mit stringbetween den link von onclick "rausschneiden" und dann als url aufrufen.

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]
  • Naja das hab ich schon getestet, dann ruft er die Seite zwar auf und es erscheinen auch neue Banner, allerdings wird der "Banner-Klick" nicht vergütet.
    Ich denke es liegt daran: "onMouseUp='setCSession();'"
    Was genau das bewirkt weiß ich leider nicht, allerdings denk ich, dass das der Teil ist der in Verbindung mit der URL die GWP (Punkte) erhöht.

  • "onMouseUp='setCSession();'" kann man ja auch als url aufrufen.... und ausserdem geht die seite eh nicht. beim klicken auf die banner geht der counter ned runter sondern bleibt auf 10

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]
  • Zitat

    Dass die Zahl auf der rechten Seite runter zählt, funktioniert nur wenn man auch eingeloggt ist


    Wie bereits geschrieben geht es nur, wenn man eingeloggt ist :)

  • Ich hab mal nachgesehen was hinter setCSession() steht. Ich wüsste allerdings nicht wie man das aufrufen soll. Beim ersten steht gotourl aber bei setCSession steht das eben nicht. Hier mal das was ich gefunden habe. Ich hoffe das hilft etwas, mich bringt es nicht weiter...

    Code
    function setCSession()
    {
    	x_get('setclicksession.php','hiddendiv');
    }

    Ich kann zwar setclicksession.php aufrufen, allerdings ist das der komplette Quelltext: "&nbsp;". Irgendwie verstehe ich nicht, wo die Punkte gezählt werden.

    Einmal editiert, zuletzt von ColdPhoenix (3. November 2007 um 20:27)

  • Zitat

    Original von ColdPhoenix
    Ich hab mal nachgesehen was hinter setCSession() steht. Ich wüsste allerdings nicht wie man das aufrufen soll. Beim ersten steht gotourl aber bei setCSession steht das eben nicht. Hier mal das was ich gefunden habe. Ich hoffe das hilft etwas, mich bringt es nicht weiter...

    Code
    function setCSession()
    {
    	x_get('setclicksession.php','hiddendiv');
    }

    Ich kann zwar setclicksession.php aufrufen, allerdings ist das der komplette Quelltext: "&nbsp;". Irgendwie verstehe ich nicht, wo die Punkte gezählt werden.

    du kannst den code nicht sehen, weil das eine php seite ist.
    und du kannst doch einfach zu(javascript ohne leerzeichen zwischen java und script .... macht die seite hier automatisch) javascript:setCSession() navigieren wenn du auf der seite bist. sollte gehen :)

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]

    Einmal editiert, zuletzt von Blubkuh (3. November 2007 um 20:36)

  • Klingt zumindest logisch :)
    Ich habe jetzt folgenden Code probiert:

    [autoit]

    $neueSeite = _StringBetween($html, "gotourl('", "');" & '" onMouseUp=')
    $neueSeite2 = "http://www.onlinetvrecorder.com/buyclicks/runningcampaigns.php" & $neueSeite
    _IENavigate($oIE, $neueSeite2, 0)
    _IENavigate($oIE, "javascript:setCSession()", 0)
    _IEImgClick($oIE, $i.src, "src", 0, 1)
    _IELoadWait($oIE)

    [/autoit]


    Er öffnet dann das Bild, aber die Aktionen vorher führt er nicht durch (zumindest bekomme ich es nichts mit). Es findet kein Bannerwechsel statt, das Script bleibt stehen und auch der Klick wird nicht gewertet.

    Okay ich habe jetzt herausgefunden, dass der von Firefox ausgegebene Quellcode nicht der ist, den mein Script sieht.

    [autoit]

    $neueSeite = _StringBetween($html, "gotourl('", "');")
    $neueSeite2 = "http://www.onlinetvrecorder.com/buyclicks/runningcampaigns.php" & $neueSeite
    MsgBox(0, "", $html)
    MsgBox(0, "", $neueSeite)
    MsgBox(0, "", $neueSeite2)
    _IENavigate($oIE, $neueSeite2, 0)
    _IENavigate($oIE, "javascript:setCSession()", 0)
    _IEImgClick($oIE, $i.src, "src", 0, 1)
    _IELoadWait($oIE)

    [/autoit]


    Damit klappt es leider auch nicht. Komischerweise gibt er mir einen leeren String zurück. Kann es sein, dass ich etwas total banales übersehe gerade?

    3 Mal editiert, zuletzt von ColdPhoenix (3. November 2007 um 21:11)

  • [quote]Original von ColdPhoenix

    [autoit]

    $neueSeite = _StringBetween($html, "gotourl('", "');" & '" onMouseUp=')
    $neueSeite2 = "http://www.onlinetvrecorder.com/buyclicks/runningcampaigns.php" & $neueSeite
    _IENavigate($oIE, $neueSeite2, 0)
    _IENavigate($oIE, "javascript:setCSession()", 0)
    _IEImgClick($oIE, $i.src, "src", 0, 1)
    _IELoadWait($oIE)

    [/autoit]

    ähm...
    du hast $html nicht definiert?
    und du benutzt ein & in der Stringbetween funktion? O_o
    kann es sein das du da was falsch verstanden hast?

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]
  • Naja okay, mein Code ist ja noch länger, hatte jetzt nicht alles gepostet. $html ist der komplette Quelltext der Seite. Das & habe ich benutzt, weil in dem Text " und ' schon vorkommt. Also habe ich einmal mit " geklammert dann das & und dann mit ' geklammert. Am Anfang steht natürlich auch #include <String.au3>. Schließlich hat das auch schon vorher geklappt.

    [autoit]

    $html = _IEBodyReadHTML($oIE)

    [/autoit][autoit]

    $oIE = _IECreate($sUrl)

    [/autoit]

    Es ist zwischen gotourl(' und ');" align=left>
    Wie soll ich das sonst klammern, wenn ' und " bei Nr. 2 schon verwendet werden?
    Also das & bezieht sich ja nur auf den zweiten String und in der Mitte steht schließlich noch ein Komma was die beiden Strings trennt. Außerdem hätte AutoIt sonst beim Kompilieren schon einen schönen Fehler gebracht.

    4 Mal editiert, zuletzt von ColdPhoenix (3. November 2007 um 23:53)

  • Spoiler anzeigen
    [autoit]

    #include <String.au3>
    #include <IE.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $oIE = _IECreate("http://www.onlinetvrecorder.com/buyclicks/runningcampaigns.php")
    _IELoadWait($oIE)
    $html = _IEBodyReadHTML($oIE)
    $neueSeite = _StringBetween($html, "gotourl('", "');")
    $neueSeite2 = "http://www.onlinetvrecorder.com/buyclicks/runningcampaigns.php" & $neueSeite
    _IENavigate($oIE, "javascript:setCSession()")
    _IENavigate($oIE, $neueSeite2, 0)
    _IELoadWait($oIE)
    _IEImgClick($oIE, $i.src, "src")

    [/autoit]

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]
  • Naja wie du siehst, habe ich so ziehmlich genau das in meinem zweiten Versuch stehen. Allerdings sieht man schon in der MsgBox, dass der String leer ist. Das funktioniert auch mit deinem Code leider nicht. Genau das ist das komische :)

  • wenn du mir jetzt noch sagst welcher string leer ist könnte ich versuchen zu helfen ;D

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]
  • MsgBox(0, "", $html) zeigt wirklich Html-Code und funktioniert auch alles super.
    MsgBox(0, "", $neueSeite) zeigt einen leeren String.
    MsgBox(0, "", $neueSeite2) zeigt dementsprechend nur "http://www.onlinetvrecorder.com/buyclicks/runningcampaigns.php".

  • ergebnis von Stringbetween wird als array wiedergegeben:

    Spoiler anzeigen
    [autoit]

    #include <String.au3>
    #include <IE.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $oIE = _IECreate("http://www.onlinetvrecorder.com/buyclicks/runningcampaigns.php")
    _IELoadWait($oIE)
    $html = _IEDocReadHTML($oIE)
    $neueSeite = _StringBetween($html, "gotourl('", "');")
    $neueSeite2 = "http://www.onlinetvrecorder.com/buyclicks/runningcampaigns.php" & $neueSeite[0]
    _IENavigate($oIE, $neueSeite2, 0)
    _IELoadWait($oIE)
    Exit

    [/autoit]

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]

    Einmal editiert, zuletzt von Blubkuh (4. November 2007 um 02:43)

  • Jetzt klappt das zwar soweit, allerdings zählt der klick nicht...
    Ich gebs auf, ich glaub ich machs mit MouseClick

  • So jetzt mit MouseClick klappt alles perfekt. Habe noch eine schöne GUI drum gebaut mit einer Fortschrittsanzeige und alles läuft :)