Seite nach window.open mit innerHTML auslesen

  • Hallihallo Zusammen,

    Ich habe schon in mehreren Foren (JavaScript) ein Beitrag erstellt, aber das eigentliche Problem konnte nicht komplett gelöst werden.

    Was ich versuche ist eine eine Seite "test.html" in einem neuen Fenster zu öffnen, den Inhalt des Body Tags mit innerHTML auszulesen und diesen in ein neues Fenster zu kopieren. Mit dem IE geht dies Problemlos ich denke der JavaScript Code wird unterschiedlich interpretiert:


    Kann es sein, das FireFox die neue Seite erst komplett lädt, wenn das JavaScript komplett ausgeführt wurde?
    Hat jemand vielleicht einen Workarround für FireFox? (Ajax geht nicht, da es sich um HTML Seiten handelt, die ausgelesen werden - beim HTTP Object gibt es keine InnerHTML Funktion)
    Kennt jemand eine FireFox Hotline, bei der man technische Informationen erhalten kann wie FireFox an der Stelle funktioniert?

    Viele Grüße

  • Zitat von Scheinmensch

    Hi!

    Es fehlt eine schliessende, geschweifte Klammer hinter "intI++;":

    FALSCH!

    Zähl mal mit:

    +1 +2 +1 +2 +1 0 -1

    Siehste, jetzt hast du eine geschlossene zu viel :wink:

    Have fun,
    NightHawk

  • Wenn ein Klammerfehler vorhanden wäre, würde auch der IE nix machen. Es gibt keine Fehlerkorrektur bei Javascript. Der Unterschied liegt meist in den verwendeten Methoden/Adressierungen. Aber nicht in der Notation. Klammerfehler führen immer direkt zu einem Fehler.

  • Zitat

    Wenn ein Klammerfehler vorhanden wäre, würde auch der IE nix machen.


    Ich habe den Quelltext in den Firefox geladen und die Javascriptkonsole gab folgenden Fehler aus:

    Zitat

    Fehler: missing } after function body


    Dann machte ich die oben gepostete Veränderung und die Konsole war zufrieden. Ob noch andere Fehler existieren entzieht sich meiner Kenntnis.

    Gruss,
    Scheinmensch

  • Und beim IE soll das dann trotzdem Funktionieren? Fazinierent.

    Fehlerhafte Klammern hat der bei mir nie geschluckt. Kannst Du mal eine *lauffähige* Demo aufspielen? Ich mag nicht nur kleine Codeschnippsel analysieren zu müssen.

  • Sorry, beim entfernen der nicht relevanten Codesegmente ist mir ein Fehler unterlaufen.

    Der Code ist jetzt auch nocht nicht optimal aber hier habe ich für den IE eine lauffähige Version.

    FireFox kann das Body Tag nur auslesen, wenn das Fenster in vorhergehenden Prozess schonmal geladen wurde sprich wenn der Anwender 2 mal auf "Seite in neuem Fenster laden" drückt. Dies wird später aber nicht mehr funktionieren, da ich mehrere Seiten auslesen, ausschneiden und einfügen möchte.

    Dies ist der JS Code:

    Dies ist die HTML Seite 'test_Seiteauslesen2.html', die ausgelesen wird.

    HTML
    <html><head><title>Test</title>
    </head><body>
    ein kurzer <b> Text </b> von Seite 1
    </body></html>
  • Hi!

    Darf man fragen, was Du damit bezweckst? Ohne Erklärung kommt mir das komisch vor. Du lädtst Daten in ein Fenster, nur um Diese in ein Zweites zu kopieren? Im Allgemeinen gibt es funktionsicherere Methoden, um Daten zu laden, die auch noch den Vorteil haben, für den User unsichtbar zu sein. Z.B. als Variableninhalte einer eingebundenen JS-Datei oder per Ajaxdownload.

    Gruss,
    Scheinmensch

  • Hallo,

    Zuerst mal vielen Dank für die Antworten.

    Ich möchte dem Benutzer ermöglichen dass per JS mehrere HTML Seiten (vieleicht 100 - die Anzahl ist variabel) in Form von Kapiteln in ein Dokument kopiert werden. Der Benutzer muss somit nicht jede Seite einzeln auswählen und ausdrucken.

    Das mit Ajax hatte ich bereits auch schon probiert:
    -...
    - Dokument öffnent

    Code
    http.open("GET", "html.html", true);


    - Daten auslesen

    Code
    var daten = http.responseText;


    - Inhalt als DOM Parsen

    Code
    var xml = (new DOMParser()).parseFromString(daten, "text/xml");

    da habe ich das Problem, dass es keine innerHTML Funktion gibt mit der ich den gesamten Inhalt des Body Tags ausschneiden kann. Beim Dom gibt es leider nur die textContent() Funktion.

  • Zitat

    dass es keine innerHTML Funktion gibt mit der ich den gesamten Inhalt des Body Tags ausschneiden kann


    Warum machst Du es nicht selbst?

    HTML
    <html><head></head><body><script type="text/javascript">
    var htm="<html><head><title>Test</title></head><body>ein kurzer <b> Text </b> von Seite 1</body></html>";
    var a=htm.split("<body>");
    var b=a[1].split("</body>");
    alert(b[0]);
    </script></body></html>


    Oder auch eleganter mit Regulären Ausdrücken .. (noch nich so mein Ding :wink:)

    Gruss,
    Scheinmensch

  • Zitat von MoreThanWords

    da habe ich das Problem, dass es keine innerHTML Funktion gibt mit der ich den gesamten Inhalt des Body Tags ausschneiden kann. Beim Dom gibt es leider nur die textContent() Funktion.

    var serializer = new XMLSerializer();
    var xml = serializer.serializeToString(document);

  • Vielen Dank für die beiden hilfreichen Antworten.

    Ich glaube das mit dem XMLSerializer ist die eleganteste Lösung, da kann ich vorher noch die Elemente am DOM bearbeiten bearbeiten und anschließend das Body Tag auslösen.

    Super Danke.