1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

iFrame HÖHE dynamisch anpassen lassen ( Forum Integration )

Dieses Thema im Forum "Konfiguration" wurde erstellt von rammler, 22. November 2010.

  1. rammler

    rammler Well-Known Member

    Registriert seit:
    11. Februar 2009
    Beiträge:
    177
    Zustimmungen:
    0
    Hi, ich brauche ein Forum für ne WP Seite.
    Die Wahl fiel auf phpbb3. Die Integrationklappt auch wunderbar, nur der IE 7 und 8 will mein JS nicht anwenden.

    Hier die Seite um die es geht:
    http://www.frankenhorse.de/?page_id=3841

    Mirt diesem Script erreiche ich eine dynamische iFame Höhenanpassung im FF / Opera und Safari

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das komische daran ist, das das Script außerhalb meiner WP Installation im IE funktioniert.


    Das Script ist von hier:
    http://www.professorweb.de/javascript-ajax/iframe-hohe-an-dessen-inhalt-automatisch-anpassen-v2.html



    So, wisst Ihr warum der IE nicht mag?
    ODER habt Ihr noch ein anderes Script parat was ich testen kann?

    ODER wie löst Ihr das Problem mit dynamischer iFrame Höhe im WP Content?
    Vielen, vielen Dank

    Bernd
     
  2. rammler

    rammler Well-Known Member

    Registriert seit:
    11. Februar 2009
    Beiträge:
    177
    Zustimmungen:
    0
  3. CHA

    CHA Member

    Registriert seit:
    16. August 2013
    Beiträge:
    9
    Zustimmungen:
    0
    mOiNMoIn.,.,.,

    dieser Beitrag ist bald 3 Jahre alt, aber ich würd ihn gern wieder beleben.
    Das Script von der Seite: http://www.professorweb.de/javascript-ajax/iframe-hohe-an-dessen-inhalt-automatisch-anpassen-v2.html ist klasse, nur der IE 10 erweitert den Inhalt des iFrames sekündlich um 1 Zeile nach unten. In allen amtlichen Browsern funktioniert das Script perfekt.

    Hier nochmal das Script:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Mich würde interessieren wie sich das Script bei euch im "IE 10" verhält.
    Vll. hat ja jemand ne Idee, warum der IE den Boden nach unten aufreisst.

    Beste Grüße

    CHA
     
    #3 CHA, 16. August 2013
    Zuletzt bearbeitet: 16. August 2013
  4. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
  5. CHA

    CHA Member

    Registriert seit:
    16. August 2013
    Beiträge:
    9
    Zustimmungen:
    0
    mOiNMoIn Melewo,

    das ist natürlich die Idee, aber ich krieg des nicht funktionierend richtig eingebaut :(

    Haste da vll. n Tip?

    Beste Grüße

    CHA
     
  6. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Ja, Tipps hätte ich auch, zum Beispiel:

    Wenn Du für IE 4 bis 6 entwickelst, dann ist zum Beispiel document.all erste Wahl. Wenn Du für neuere Browser entwickeln möchtest, verwende stattdessen lieber die DOM-Methoden. Mit anderen Worten, der Code ist nicht mehr zeitgemäß und nach meiner Meinung unvollständig.
     
  7. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Habe mal ein kleines Beispiel fertig gemacht, was eigentlich in allen Browsern funktionieren sollte, jedoch nur wenn Du auf die Seite im Frame und auf die Seite mit dem Frame Zugriff hast.

    Die Seite im Frame:
    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Die Seite mit dem Frame:
    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Domainübergreifend ginge es auch, wobei sich dann aber postMessage anbieten würde und die Angelegenheit sich ein wenig komplizierter gestaltet, um keine Sicherheitslücken aufzureißen. Dazu würde ich aber höchstens mal ein Tutorial machen, wenn etwas mehr Zeit vorhanden sein sollte. Nur so als Ansatz:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  8. CHA

    CHA Member

    Registriert seit:
    16. August 2013
    Beiträge:
    9
    Zustimmungen:
    0
    mOiNMoIn,

    danke dir Melewo...
    In meinem Projekt hat deine Version nicht funktioniert.
    Woran das jetzt im einzelnen gelegen haben kann.,.,., nicht klar schlüssig.

    Der zuvor oben gepostete JS-Code funktioniert insofern ja super in den aktuellen
    Browser-Versionen von: FF, GC, OPERA. Nur der IE braucht eine "window.clearInterval" Anweisung.

    Jetzt hab ich paar Stunden hin und her probiert und bislang noch kein Erfolg verzeichnen können.

    Hier mein jetziger Arbeitscode:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    "window.setInterval" wird jetzt beendet, aber letztendich auch das gesamte Script.
    Da wird einem mal wieder die "IE" Meganervsuppe um die Ohren gefegt.
    Der "IE" bleibt für mich immernoch, ein Alter Opa auf ner neuen Harley. :lol:

    :???:

    Beste Grüße

    CHA
     
    #8 CHA, 19. August 2013
    Zuletzt bearbeitet: 19. August 2013
  9. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Vermutlich an der Umsetzung, denn ich habe die auch mit FF, Chrome und IE getestet.
    Und der andere Code, warum beendest Du bei >= 1, gibt es dafür einen Grund?
     
    #9 Melewo, 19. August 2013
    Zuletzt bearbeitet: 19. August 2013
  10. CHA

    CHA Member

    Registriert seit:
    16. August 2013
    Beiträge:
    9
    Zustimmungen:
    0
    ... nicht wirklich, habe die 1 stehen lassen da ich derzeit nicht weiss wie ich den Code einmal aufrufe und er dann gestoppt wird.
    Ich will ja die Endlosschleife im IE verhindern.

    Viele Grüße

    CHA
     
  11. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Ich weiß zwar nicht was Du Dir da zusammenschreibst, doch nun habe ich auch noch diesen Code ausprobiert, ohne den geringsten Hinweis auf einen Fehler zu erhalten.

    Da ich hier kein Script korrigieren werde, welches noch das all-Objekt verwendet, habe ich mal die entsprechenden Zeilen gelöscht.

    Dann, wozu wird da die globale Variable var auto_resize_timer definiert, wenn sie anschließend im weiteren Verlauf weder benutzt noch verwendet wird?
    Wozu muss die Funktion autoresize_frames mit window.setInterval aufgerufen werden, wenn die nur die Höhe ermitteln soll und auch anders aufzurufen geht?

    Der ein wenig aufgefrischte Code und nun erzähl mir nicht wieder, dass würde nicht funktionieren:

    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  12. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Und da ich nicht begreifen konnte, warum da eine Schleife verwendet wurde, um alle iFrame-Elemente innerhalb eines Dokumentes zu ermitteln, obwohl es nur einen iFrame gibt, habe ich die Schleife nun auch noch entfernt.

    Ich weiß, dass einige meiner ersten Scripts Mängel aufweisen, doch wer sich so ein Zeug zusammen sucht, ohne dass er weiß, was er da eigentlich verwenden möchte, der braucht sich auch nicht zu wundern, wenn sich eines Tages Fehler einstellen und er vor einer weißen Seite sitzt. Wenn, so sollten doch auch nur Scripts und Plugins verwendet werden, die ab und an mal aktualisiert werden.

    Seite im Frame:
    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Seite mit Frame:
    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  13. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Und wenn es doch mehr iFrames auf einer Seite gibt, dann sollte auch jeder iFrame einzeln über eine ID oder wie auch immer angesprochen werden.
     
  14. CHA

    CHA Member

    Registriert seit:
    16. August 2013
    Beiträge:
    9
    Zustimmungen:
    0
    Beim hin- und her- testen bin ich bislang nicht wirklich weiter gekommen.

    Das JS-Script:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ... funktioniert tadellos, nur mit einer kleinen Ausnahme.
    Wie schon zuvor erwähnt wächst NUR IM IE 10 der Content des iframe`s Zeile für Zeile
    sekündlich nach unten, sodass das iframe bis ins Bodenlose größer wird.

    Laut "Melewo" fehlt nachdem es vorerst ein window.setInterval gab,
    ein beendendes window.clearInterval.
    Bislang habe ich das Script nur komplett damit beenden können oder teilweise
    nur ausser Kraft setzen können.

    Über Lösungsvorschläge bezüglich des bestehenden Scriptes wäre ich sehr dankbar. :grin:

    Trotzdem nochmal großen Dank an "Melewo" für seine Ideen.

    Beste Grüße

    CHA
     
  15. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Nun gut, dann noch als kleiner Kommentar.

    Und wenn ich die Bezeichner etwas einkürze, erhalte ich ein brauchbares Listing, ohne überflüssigen Schleifen und Variablen, welches in allen getesteten Browsern seine Arbeit verrichtete.

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  16. CHA

    CHA Member

    Registriert seit:
    16. August 2013
    Beiträge:
    9
    Zustimmungen:
    0
    Hallo "Melewo" ...

    dein Script bringt aber nicht den gewünschten Effekt.
    Dein Script bleibt bei einer bestimmten Höhe stehen und schneidet ab.

    Ich will auch keine zusätzlichen DIVs um und ins iframe bauen,
    sondern nur eine bestimmte Quelle darstellen lassen, die widerum
    eine TAB-Einheit bildet, mit Menü usw.

    Die Inhalte der einzelnen html Dateien sind halt unterschiedlich lang,
    und das iframe soll halt auch nur die Höhe des gerade dargestellten
    Content im iframe anzeigen, sodass der header und footer immer den
    gleichen Abstand zum Content bekommt.

    Diesen Zweck erfüllt das Script komplett.,.,., nur der IE wirft pro Zeile
    sekündlich Platz nach unten aus.
    Wie gesagt: das Script funktioniert in FF, GC, OPERA super und ohne Tadel.
    Da werfe ich doch das Script nicht einfach über Bord, ohne das mir ein anderes
    ein ähnlichen Effekt liefert.

    Jetzt fehlt nur noch der Kniff um den IE zu erzählen: "keine weiteren Zeilen
    nach dem Aufruf erfolgen lassen".

    Beste Grüße

    CHA
     
  17. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Und genau dafür verwende ich schon seit Jahren ein Script ähnlich dem auf der letzten Seite von mir vorgestellten Listing, welches ich nur noch einmal ein klein wenig aktualisierte. Und genau damit binde ich zum Beispiel den Content mit Angeboten von Amazon ein, der von der Höhe nie einheitlich ist. Und so benutze ich das bereits seit Jahren, weiß nicht mehr ob ab IE 7, doch mindestens ab IE 8 bis IE 10 gab es damit bisher nicht das geringste Problem, von dem ich je etwas erfahren hätte.

    Um mal ein Beispiel zu bringen, die Buchempfehlungen auf der verlinkten Seite werden im iFrame geladen. Und falls der iFrame bei Dir nicht weglaufen sollte, dann brauchst Du nur in den iFrame zu klicken, um Dir den Quelltext vom iFrame anzeigen zu lassen und kannst Dir den Body-Tag kopieren.

    Beispiel

    Der Unterschied zum Listing von der letzten Seite besteht darin, dass ich JavaScript dort noch mit onload im Body-Tag notierte, heute aber lieber JavaScript und HTML trenne.
     
    #17 Melewo, 20. August 2013
    Zuletzt bearbeitet: 20. August 2013
  18. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Was zu Problemen führen könnte, ist Cross Site Scripting, weil das im Widerspruch zur Same Origin Policy steht, an dem sich eigentlich alle Browser mehr oder weniger halten sollten. Beispiele, was geht und was nicht geht findest Du hier:

    http://de.wikipedia.org/wiki/Same-Origin-Policy

    Und was auch noch zu Problemen führen könnte, wenn Du versucht die Höhe von einem nicht vorhandenen Element zu ermitteln. In den letzten Beispielen ist eine Kontrolle eingebaut, welchen Wert gibt diese im IE aus?
     
  19. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Kleiner Nachtrag noch, habe mal nach diesem Script gesucht, wurde ja oft genug kopiert, wie es scheint.

    window.setInterval soll der laufenden Anpassung dienen, falls sich die Höhe des Contents im iFrame verändert, während sich ein User auf der Seite befindet. So kann der iFrame halt alle 400 (je nach Einstellung) Millisekunden auf einen sich verändernden Content im Frame reagieren. Ist aber bei der Einbindung einer HTML-Seite mit normalen Content nicht erforderlich und gegebenenfalls bei Seiten mit sich verändernden Content mit window.parent.postMessage besser umsetzbar.

    Bei Seiten mit Blätterfunktionen im iFrame ist beides nicht erforderlich, wenn die Höhe bei onload neu durchgereicht wird.
     
  20. CHA

    CHA Member

    Registriert seit:
    16. August 2013
    Beiträge:
    9
    Zustimmungen:
    0
    mOiNMoIn Melewo,

    ich muss hinzufügen das dein Script bei mir nur teils funktioniert.

    Folgende Prozedure:

    Wenn die erste Seite im iframe lädt, dann wird der Content richtig in Höhe angezeigt bzw. wird angepasst.
    Nun klicke ich in einem Tab Menü auf ein Button und es öffnet sich ein größerer Content, dann wird er nicht
    neu bemessen, sondern erst wenn ich die gesamte Seite aktualisiere und das widerum auch nur im IE.
    Der Firefox springt beim neuladen der Seite wieder zur Start.html die im iframe sitzt.

    Hast du da vielleicht ne Idee, wie man die einzelnen html Seiten im iframe bei Aufruf nachladen kann?

    Da hapert es nämlich.

    Beste Grüße

    CHA
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden