Navigieren über ID (IE-Objekt)

  • Ich möchte fragen, wie ich zu einer bestimmten div-id in einem IE-Objekt navigieren kann.
    Ich navigiere erst mit

    [autoit]

    _IENavigate($IE, 'about:blank')

    [/autoit]


    und schreibe dann den Inhalt mehrerer HTML-Dateien mit

    [autoit]

    _IEDocWriteHTML($IE,$data)

    [/autoit]


    in das Objekt. soweit klappt das auch alles. Nun muss ich aber in einzelne Divs navigieren.
    Sie sind alle durchnummeriert und die Nummer steht in der ID.
    Über die Nummer versuche ich nun zum Div mit der ID zu navigieren.

    [autoit]

    _IENavigate($IE,"#10",0)

    [/autoit]


    Dies funktioniert jedoch nicht.
    Wenn ich vorher zu einer der Dateien navigiere öffnet sich erst die Seite, wird mit dem HTML Überschrieben, danach funktioniert das navigieren jedoch auch nicht.

    [autoit]

    _IENavigate($IE,"file:///" &$GlobalReadPath&""&$ges[5][2],0)

    [/autoit]


    Navigiere ich in den Ordner öffnet sich der Ordner, das bringt mich aber auch nicht weiter.

    Ich hoffe, einer von euch hat eine Idee, wie ich das umsetzen kann.

  • Mit _IENavigate rufst du URLs auf (steht allerdings auch in der Hilfe ;)). Das hat nichts mit Ddiv zu tun. Willst du den Inhalt der div auslesen?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Ich lade mehrere HTML-Dateien und nehme die BODY-Bereiche davon. Diese packe ich in eine Variable und schreibe den Inhalt in das IE-Objekt. (head und body,... Grundgerüst wird erzeugt).
    Jede Datei wird von einem DIV umgeben und die Divs bekommen eine durchnummerierte id.
    Beispielhafter Aufbau:

    Spoiler anzeigen


    <html>
    <head>
    ...........
    </head>
    <body>
    <div id="0">Datei 1</div>
    <div id="1">Datei 2</div>
    <div id="2">Datei 3</div>
    <div id="3">Datei 4</div>
    ...........
    </body>
    </html>


    Dabei ist der Inhalt der Divs recht groß.
    Daher will ich links von dem IE-Objekt eine ListBox erzeugen, wo die einzelnen Dateien angeklickt werden können.
    Dann will ich damit zu dem jeweiligen Div "scrollen".
    (Im Explorer geht das ja über die ID (<a href="#id">...</a>)

  • Hab den Plan jetzt aufgegeben und mach es mit den einzelnen Dateien, die ich einfach aufrufe. Jetzt versuche ich es so zu machen, dass automatisch, wenn das untere Ende der Seite erreicht wird die nächste Datei geöffnet wird. Das funktoniert auch. Das Problem ist nur, dass ich nicht, wenn ich am oberen Rand bin die Seite davor nutzen kann. Ich hab das versucht, indem ich die Scrollposition benutze. Ist die Scrollbar am Ende kommt die nächste Seite, ist sie am Anfang, die vorherige. Dazu Scrolle ich beim Aufruf der Seite 1px nach unten. Leider wechselt er dennoch zur Vorherigen seite. Die aufgerufene Seite wird nur ganz kurz angezeigt.
    Code:

    Spoiler anzeigen
    [autoit]

    while 1
    GUICtrlSetData($ButtonNext,$o_doc.body.scrollTop)
    if $o_doc.body.scrollTop=($o_doc.body.scrollHeight-$o_doc.body.clientHeight) then
    setFile($pos+1)
    $pos+=1
    elseif $o_doc.body.scrollTop=0 then
    setFile($pos-1)
    $pos-=1
    endif
    sleep(100)
    WEnd
    Func setFile($nr=-1)
    if $nr>-1 and $nr<UBound($spinesar)-1 then
    $file=_ArraySearch($manifestsar,$spinesar[$nr],0,0,0,0,1,0)
    local $drive,$dir,$name,$ext
    _PathSplit ($GlobalReadPath&""&$manifestsar[$file][1], $drive,$dir,$name,$ext)
    ;msgbox(48,"",$drive&$dir&$name&$ext)
    if $ext<>".html" then
    if $ext=".xhtml" then
    $path=$drive&$dir&$name&".html"
    $path=StringReplace($path,$GlobalReadPath&"","")
    $manifestsar[$file][1]=$path
    FileMove($drive&$dir&$name&$ext,$drive&$dir&$name&".html")
    _IENavigate($IE,"file:///" &$GlobalReadPath&""&$manifestsar[$file][1])
    else
    $fileData=FileRead($GlobalReadPath&""&$manifestsar[$file][1])
    $ar=stringsplit($manifestsar[$idx][1],"")
    $pfad=$ar[UBound($ar)-1]
    $fileData=StringRegExpReplace($fileData,"<body(.*?)>","<body>",1)
    $fileData=StringRegExpReplace($fileData,"<head(.*?)>","<head>",1)
    $betw=_StringBetween($fileData,"<body>","</body>")
    _IEBodyWriteHTML($IE,$betw[0])
    endif
    else
    _IENavigate($IE,"file:///" &$GlobalReadPath&""&$manifestsar[$file][1])
    endif
    $IE.document.parentWindow.scroll(0, 1)
    endif
    EndFunc

    [/autoit]


    Jetzt stellt sich mir die Frage, woran das liegt, bzw. ob man das auch besser lösen kann.Ich hoffe, es hat jemand eine Idee :)