iframe - höhe dem inhalt anpassen
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
-
hi,
wie kann ich es machen, das der iframe automatisch so hoch wird wie der inhalt der im iframe angezeigten seite?
der iframe ist in einer tabelle und in ihm werden über das menü die seiten übergeben die er anzeigen soll.
nun ist in einer seite mal mehr und mal weniger inhalt und der frame soll automatisch so hoch werden wie der inhalt (damit man nicht innerhalb der tabelle scrollen muss) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Für soetwas eignet sich doch AJAX bestens.
Du könntest aber natürlich auch folgendermaßen vorgehen:
Auf der Seite, die aufgerufen wird:
window.onload = function(){ iframe = this.parent.document.getElementById('iframe'); for(var i=0;i<iframe.attributes.length;i++){ var node = iframe.attributes[i]; if(node.nodeName == "height"){ node.nodeValue = this.document.body.scrollHeight; } } }
Der Code muss in die aufzurufende Seite, weil man von außen keinen Event-Handler setzen darf.
EDIT: Es funktioniert nicht richtig, aber scrollHeight sollte doch richtig sein, oder ?
Nimm lieber AJAX
Beitrag zuletzt geändert: 24.6.2009 15:04:54 von progger -
mit ajax kenn ich mich leider 0 aus, und befor ich diese programmiersprache lerne um dieses problem zu lösen,
such ich mir lieber einenen umweg :P
dein script hat bei mir auch nicht funktioniert
gibt es den keine einfache html lösung?
die tabelle würde sich ja normal (zum beispiel wen ich die datei mit php include) automatisch vergrößern, nur der iframe will die tabelle nicht aufdrücken ...
gibts vlt. ne andere möglichkeit als iframe und include um eine seite in die tabelle einzubinden? -
Ja, auf den iFrame verzichten! Was willst Du denn damit verbrechen?
-
strange schrieb:
Ja, auf den iFrame verzichten! Was willst Du denn damit verbrechen?
und wie soll ich sonst die unterseiten einbinden?
mit include kann ich in den eingebundenen seiten keine get/post formulare mehr ausführen... -
Kannst du sehr wohl machen. Du musst dann halt ganz traditionell die gesamte Seite neu laden lassen.
-
evil-devil schrieb:
Kannst du sehr wohl machen. Du musst dann halt ganz traditionell die gesamte Seite neu laden lassen.
befor das hier abschweift, ich hab das thema erstellt weil ich es mir einfach machen möchte und nicht bei einer ändernung alle seiten abändern muss! -
Musst du doch gar nicht?!
Ich schätze mal du nutzt PHP oder eine andere Scriptsprache die serverseitig die Inhalte erzeugt oder? Dann musst du deinen Code nur entsprechend organisieren und includierst einzelne Inhalte je nach Wunsch um das Endergebnis zu erzeugen.
Das kann dann so aussehen das du eine Logikdatei und eine Template (HTML) Datei für die Navigation hast. Also strikte Trennung von Logik und Ausgabe und das wird dann von der Hauptlogikdatei entsprechend eingebunden.
Ich sehe da keine Probleme bei. -
Die Variante mit AJAX:
function update(url,func){ var request; if(window.XMLHttpRequest){ request = new XMLHttpRequest; if(request.overrideMimeType){ request.overrideMimeType('text/plain'); } }else if(window.ActiveXObject){ try{ request = new ActiveXObject('Msxml2.XMLHTTP'); }catch(e){ try{ request = new ActivXObject('Microsoft.XMLHTTP'); }catch(e){} } } if(!request){ alert('ERROR'); return false; } request.onreadystatechange = function(){ if(request.readyState == 4){ if(request.status == 200){ func(this.responseText); } } } request.open('GET',url,true); request.send(''); } function out(responseText){ document.getElementById([ID]).innerHTML = responseText; }
Und jetzt musst du nur noch die Links abändern, damit es etwa so aussieht:
<a href="javascript:update('[URL]',out);">[TEXT]</a>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage