• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

iFrame alternative?

D

Deleted member 26020

Guest
iFrame Problem! Lösung/Alternative?

Hallo,

normalerwise lese ich nur die verschiedenen Beiträge aus den Foren und bisher wurden meine Fragen immer ausreichend beantwortet.
Nun bin ich aber an einem Punkt, wo ich euch direkt fragen muss :)

Ich hab eine Website die ich derzeit mit iFrames aufgebaut hab, da das obere "Logo" relativ groß ist und nicht immer neu geladen werden soll.
Die Website ist nun perfekt, hab die einzelnen iFrames mit einem JavaScript so eingerichtet,
das die Gesamt-Seitenlänge automatisch vergrößert wird, so das keine Scrollbalken im iFrame auftauchen.

ABER..,..leider funktioniert das nicht so einwandfrei mit allen Browsern. Firefox nimmt die iFrames und stellt die Seite Fehlerfrei dar,
aber mit Chrome werden die iFrames bzw. die eingebetteten HTML Seiten "abgeschnitten"

Habt ihr eine Idee wie ich das für relativ viele Browser anpassen kann?
Ich hab folgenden Code verwendet:

<script type="text/javascript">
var framefenster = document.getElementsByTagName("iFrame");
var auto_resize_timer = window.setInterval("autoresize_frames()", 400);
function autoresize_frames() {
for (var i = 0; i < framefenster.length; ++i) {
if(framefenster.contentWindow.document.body){
var framefenster_size = framefenster.contentWindow.document.body.offsetHeight;
if(document.all && !window.opera) {
framefenster_size = framefenster.contentWindow.document.body.scrollHeight;
}
framefenster.style.height = framefenster_size + 'px';
}
}
}
</script>

Ich dachte da an einen DIV Container, aber wie binde ich da die entsprechende html Datei ein?

vielen dank im voraus für eure Hilfe! :)
 
Zuletzt bearbeitet von einem Moderator:
Werbung:

, da das obere "Logo" relativ groß ist und nicht immer neu geladen werden soll.

Ich bin jetzt nicht der größte Profi hier aber ich bin mir sicher, dass Bestandteile einer Website, großteils Bilder im Cache des jeweiligen Browsers gespeichert wird.

Ich würde Dir überhaupt von iFrames abraten, und stattdessen includes verwenden:

PHP:
<?php

include('logo.php');

?>

Hoffe ich konnte Dir damit helfen :)
 
Moderation: Verschoben von HTML zu JavaScript.

Wenn Du bei iframes bleiben willst, musst Du ggfs. das o.g. Script an verschiedene Browser anpassen. Soweit ich das sehe sollte das bei diesem Script aber nicht notwendig sein. Es sollte bereits in den aktuellen Versionen von FF, IE, Opera und Chrome funktionieren, ebenso in anderen Browsern. Gibt es in Chrome denn in der JavaScript-Konsole eine Fehlermeldung dazu?

Wenn Du auf iframes verzichten möchtest, kannst Du wie oben schon gesagt die Inhalte includen. Das geht mit PHP, weder mit HTML noch mit JavaScript. Der "Nachteil" aus deiner momentanen Sicht wäre dabei jedoch, dass dann die Seite jedes Mal komplett neu lädt, wenn Du im Contentbereich einen anderen Inhalt darstellen möchtest. Das wiederum könnte man mit AJAX umgehen. Schau dich mal nach AJAX (ist ein JavaScript-Technologiebestandteil) um, vlt. ist das ja das was Du suchst.
 
Werbung:
Danke fürs verschieben ;-)

Vielleicht hab ich dem Code zum einbinden einen Fehler gemacht?

<iframe allowtransparency="true" src="./index2/index2.html"
style="margin:auto; width:1000px; height:700px; border:none;"
frameborder="0" name="window" scrolling="no"></iframe>
 
Da ist kein offensichtlicher zu sehen. Ist die gesamte Seite valide? Gibt es JavaScript-Fehler an der Konsole?
 
Danke für die schnelle Antwort :-) Ich hab keine Fehlermeldungen angezeigt bekommen.. Ich schick dir mal einen Link per PN, wenn das in Ordnung ist..
 
Werbung:
PN ist angekommen, aber sorry - bei mir sieht die Seite im Firefox dermaßen zerschossen aus, dass ich nicht sicher bin was Du hier eigentlich erreichen willst. Außerdem kann ich dort auch kein iframe entdecken. Jeder Klick auf die Menüpunkte führt zum Öffnen neuer Tabs in meinem Browser. Und die Seiten dort sehen wiederum anders aus als die Startseite. Ich kann hier kein Konzept erkennen, und auch nicht entdecken wo Du jetzt iframes zum Einsatz bringst und wo das eigentliche Problem besteht.

Wenn ich mir die Seiten weiter anschaue, dann kranken allesamt daran, dass Du auf Tabellenlayouts setzt und innerhalb von diesen wiederum absolut positionierte Elemente unterbringst. Das ist nicht nur schlechter Stil, das ist auch Anwendung von HTML-Elementen für Dinge für die sie nicht gedacht sind. Tabellen sollten nur tabellarische Daten enthalten und nicht als Grundgerüst für eine Webseite dienen. Und absolute Positionierung sollte bedacht genutzt werden, nicht in der Form wie Du es hier tust. Daher sieht die Seite bei mir vermutlich auch so seltsam aus.
 
Oh man.. :shock: :shock: :shock: Ja ich habs grad im FF gesehen..
Hab den Fehler nun behoben. Jetzt seh ich im Chrome wie erwähnt nur die angeschnittenen iFrames. Alles andere (u.a. auch das JavaScript Menü) wird korrekt angezeigt!

In FF wird die gesamte Seite verlängert, also ohne Scrollbalken im iFrame und funktioniert zu 100%!

In Opera werden die Seiten im iFrame wie im Chrome einfach abgeschnitten und zusätzlich das JavaScript Menü nicht korrekt angezeigt,
d.h. es klappt nichts auf und die "überschrift" wird bei MouseOver kleiner, statt das ein Menü aufklappt.

Falls ich es nicht gut ausgedrückt hab, kann ich Screenshots anfertigen und hochladen wenn es gewünscht ist..
Ich steh grad entweder voll aufm Schlauch oder mir fehlt die "Erleuchtung" :grin: Ich bedank mich schonmal tausendfach für eure Hilfe!! Danke!
 
Zuletzt bearbeitet von einem Moderator:
Welche Firefox-Version hast Du? In meinem 11er sehe ich keine angeschnittenen iframes. Auch sehe ich im Firebug, dass die Höhe des iframes jedes Mal soweit ich sehe korrekt angepasst wird. Auch an deinem JavaScript-Code oben sehe ich kein Problem diesbezüglich.
 
Werbung:
Oh, ich bin heut etwas durcheinander.. ich seh grad das ich mich verschrieben hab im vorherigen post.. :oops:
(Habs bereits editiert)

- Im FF ist alles korrekt dargestellt
- Bei Chrome stimmt die über JS angepasste iFrame Höhe nicht..
- Bei Opera stimmt die über JS angepasste iFrame Höhe nicht und das falsche JS Menü (oben, unter dem "Titelbild")
- Im IE wird zudem die untere grüne Leiste nicht "fixed" sondern "absolut" am Ende der Seite.

Hier mal ein Link für alle: http://tinyurl.com/d9abncc
 
iframe ist nicht mehr stand der dinge... nutze lieber DIV... das ist leicht überschaubar und hat mehr flexibilität.
 
Danke :) Ich habs jetzt aber mit php gelöst.. War einfacher als ich dachte.. ;-)
Am Anfang haben mich die Zeichen etwas "überwältigt", aber ich denke ich werd die Sache mit PHP vertiefen, da mich das sehr interessiert, jetzt nach einem Erfolgserlebnis :D
 
Werbung:
iframe ist nicht mehr stand der dinge... nutze lieber DIV... das ist leicht überschaubar und hat mehr flexibilität.

Dieses ominöse "div" ist auch nicht Stand der Dinge. Man verwendet HTML-Elemente wofür sie gedacht sind, dank HTML5 ist das doch erst recht ersichtlich. <div>-Elemente sollte man nur als Hilfsmittel nutzen, nicht als Basis für eine Webseite, genauso wenig wie iframes oder Tabellen.

@nobody1407: Wie hast Du das über PHP lösen können?
 
Mit PHP include.. <?php include ('filexy.html'); ?>

Ich such mal das tutorial und poste den Link, wenn das in Ordnung ist..
 
Werbung:
Zurück
Oben