Hilfe - Suche - Mitglieder - Kalender
Vollansicht: Inline-Frame 1.0.1-sf
Forum Sefrengo.org > Downloads > Alpha, Beta ... Vorabversionen
luxli
Mit dieser Anpassung an Sefrengo habe ich Neuland betreten. Wenn alles richtig ist kann dieses Modul zu den stabilen Modulen verschoben werden.

Zusätzlich zur Anpassung an Sefrengo sind kleine Änderungen enthalten damit die Seiten valide sind. Aber natürlich nur wenn auch die eingebundene Seite valide ist.

Überprüft bitte auch die von mir erstellten Textdateien auf Richtigkeit. Vielleicht wirft auch Bratzi als Autor der DeDi-Version einen Kontrollblick in das Modul.

Klicken um den Anhang anzusehen
Olaf
Klasse, du nun auch als Entwickler, toll!!!
luxli
ZITAT(Olaf @ Tue. 15. August 2006, 11:48) *
Klasse, du nun auch als Entwickler, toll!!!


das ist etwas zuviel der Ehre für eine einfache Anpassung, aber was noch nicht ist kann ja vielleicht noch werden dry.gif
speedweb
Hallo,
I-Frame ist sehr gut zu gebrauchen.
Ich bin schon länger nach einer optimalen möglichkeit zu suchen
die höhe des I-Frames dynamisch anzupassen.

Für den IE habe ich schon eine lösung, doch leider spielt der FF nicht ganz mit.
Wenn dann sollte es in beiden funktionieren.
Was auch noch nicht ganz zu 100% funktioniert ist der wechsel von einem
langen Content auf einen kurtzen Content (Frame wird nicht immer verkleinert)

Werde weitersuchen und sobald ich eine funktionierende lösung habe,
versuchen das ganze in das Modul einzubauen.

Vielleicht hat wer schon einen weiteren lösungsansatz???

Gruss Thomas
Olaf
Lad doch mal irgendwo hin eine statische Demoseite, mal schauen vielleicht bekommen wir das gemeinsam hin.
speedweb
hallo,
das ganze steht schon online.

www.planetmedia.at (ist aber noch DEDI da ich schon länger daran arbeite)

unter BUISSNES -> MORE gibt es einen einfachen Shop der per Iframe eingebunden ist.

und unter SPORT -> TRANSALP -> TRANSALP 2006
habe ich ein phpBB Forum eingebunden das noch fertig an das Layout angepasst werden muss.

Nun funktioniert das mit der dynamischen höhe auch im FF.
Leider funktioniert der wechsel zurück noch nicht richtig.
(i-frame mit viel inhalt --> i-frame mit wenig inhalt)

Das ganze ist mit js gelöst, da ich bisher keine möglichkeit gefunden habe wie das in php zu lösen wäre.
Sehr schön wäre es wenn es ohne js ginge.

Gruss Thomas
Olaf
PHP kann nicht deinen Bildschirm ausmessen, das wird also nix.

"statische Demoseite" meint eine einfache HTML die das Problem verdeutlicht, am besten darauf beschrieben worum es geht.
speedweb
auf der Seite mit dem Forum ist das ganze deutlich zu sehen.......

Der i-frame wird beim öffnen der Category auf die benötigte höhe vergrössert.

Wenn wieder zurückgewechselt wird auf die Forum Startseite bleibt der i-frame
auf der zuletztverwendeten höhe.

Zu erkennen an der Scrollbar auf der Seite.
Die unterste Zeile (Footer) wird nicht nach oben gerückt.

Dies ist soweit das einzige problem.
Bin noch nicht ganz daraufgekommen an was das liegt.
Ich vermute aber dass die Seite nicht richtig aktualisiert wird, oder der wert der höhe
falsch übernommen wird.

Gruss Thomas
Olaf
Jo, Problem verstanden, es werden auch bei jedem Klick 20px mehr tongue.gif

Versuch mal das onload="iFrameHeight()" in das Forum reinzutun, nicht in das DEDI. Aber wirklich, ganz im trüben gefischt!

Oder du müsstest im JS einen globalen relaod erzwingen, aber wie das geht....
speedweb
das onload="iFrameHeight()" hatte ich schon versuchsweise im Forum eingefügt.

hat leider nichts gebracht.
Ausserdem wäre dies nicht sinvoll da das ganze dann nicht direkt mit einem Modul realisiert werden kann.
Es müsste immer der eingebundene Bereich editiert werden.

An einen globalen reload habe ich auch schon gedacht.
Werde mal schauen ob dies mit JS möglich ist (wenn ich mich nicht täusche habe ich früher mal was gelesen das in diese richtung geht - vor Jahren wurde noch viel mit Frames gearbeitet wink.gif mad.gif smile.gif biggrin.gif )

Wo die 20px herkommen kann ich auch noch nicht sagen........

Thomas
Olaf
ZITAT(speedweb @ Wed. 16. August 2006, 15:37) *
Wo die 20px herkommen kann ich auch noch nicht sagen........

Das kommt aus dem Script, du gibst immer 20 dazu, guck mal rein wink.gif

Das komische ist ja, dass also scheinbar eine Berechnung durchgeführt wird, aber nicht die Höhe neu angesetzt wird. Bzw. immer nur wenn die sich vergrößert, denn dann klappts ja. Verkleinert sich die Höhe des Contents werden nur die 20 zur bisherigen Höhe dazugerechnet.

Soviel zur Fehlerbeschreibung smile.gif
Olaf
Ich habs, deine Funktion ist ungeeignet:
QUELLTEXT
                h = document.frames('blockrandom').document.body.scrollHeight;
                document.all.blockrandom.style.height = h + 20 + 'px';

Das nimmt ja immer die Höhe von Body + 20, also alles so wie du willst, bzw. eigentlich nicht willst wink.gif
speedweb
vielen Dank.....
das muss ich mir mochmals genauer ansehen.

Ich hatte zuvor eine andere lösung di aber im FF nicht funktionierte.

Nach langen Googeln habe ich dann dies hier gefunden.
Dies funktioniert in beiden, jetzt muss ich schauen wie ich das anpassen kann.
(bin nicht gerade besonders bewandert in JS)

Aber was nicht ist kann noch werden....... wink.gif

Thomas
speedweb
Hallo,
nun habe ich was hinbekommen was im IE unt FF funktioniert.
(zumindest mit *.htm Dateien - dynamiche Seiten habe ich noch nicht getestet zum einbinden)

QUELLTEXT
<script type="text/javascript">
<!--
function resize_me()
{
if(document.getElementById)
    {
    try
        {
        intDiff = (document.all||window.opera)?3:0;intDiff += (window.opera)?4:0;
        objBody = document.getElementsByTagName('body')[0];
        objBody.style.margin = 0;objBody.style.overflow = 'hidden';
        objBody.innerHTML = '<div>' + objBody.innerHTML + '</div>';
        parent.document.getElementsByName(self.name)[0].style.height
                          = objBody.firstChild.offsetHeight + intDiff;
        }
    catch(e)
        {
        return true;
        }
    }
}
window.onload=resize_me;
//-->
</script>


Dieser Teil muss bei jeder Datei die im I-Frame aufgerufen wird in den Header.
(ist nicht die elegante lösung aber funktioniert........ sad.gif sad.gif sad.gif sad.gif )

Im Eltern Dokument muss der Iframe nur einen eindeutigen name haben.
Das heisst es ändert sich am modul nichts.

Ich habe bis jetzt noch keine möglichkeit gefunden das ganze im Hauptdokument
zu lösen, was sicher optimal wäre.
Was dabei noch zu beachten ist, ist dass der gesamte inhalt der im I-Frame aufgerufen
wird in einem Div ausgegeben wird. (zu beachten wenn mit div gearbeitet wird)

Werde aber sicher noch nach weiteren lösungen suchen, den diese gefällt mir nicht ganz.

Gruss Thomas

PS:
konnte das ganze heute noch mit dynamischem inhalt testen, und kann sagen dass es soweit funktioniert.
es gibt 2 aktuelle Beispiele unter www.planetmedia.at
1. Sport -> Transalp -> Transalp 2006 -> Forum
(hier habe ich das phpBB2 Forum eingebunden, da wird der Frame noch nicht verkleinert - selbe Script)
2. Buissnes -> more-df -> Shop
(hier funktioniert es genau so wie ich mir das vorstelle)
Leider funktioniert das ganze nur ausgehend vom selben ACCOUNT (die eingebundenen Dateine müssen ja bearbeitet werden)
Ich habe auch das einbinden von einem externen ACCOUNT getestet (mit bearbeiteten Dateien) aber leider ohne erfolg.

Vielleicht hat ja wer noch eine Idee......................

Thomas
Daniel
Hier möchte ich nur mal kurz etwas einwerfen, dass vielleicht den ein oder anderen helfen wird, wenn er dieses iframe-autosizing verwenden möchte.

Ich habe noch keine Lösung gefunden, wie man iframes, die auf andere Domains verweisen, auto-sizen kann.

Beispiel:
Auf http://www.meine-domain.de/
HTML
...
<iframe src="http://www.andere-domain.de/"></iframe>
...

diesen iframe kann man nicht auto-resizen.

Das liegt daran, dass JavaScript von andere-domain.de aus Sicherheitsaspekten nicht auf Objekte von meine-domain.de zugreifen darf (umgekehrt natürlich auch nicht) und es Exceptions hagelt.
luxli
ZITAT(Daniel @ Thu. 17. August 2006, 22:49) *
Ich habe noch keine Lösung gefunden, wie man iframes, die auf andere Domains verweisen, auto-sizen kann.

Obwohl ich von Programmierung wenig bis nichts verstehe, das Beispiel von spedweb einerseits und der Opera-Browser mit "An Breite anpassen" andererseits lassen mich zumindest annehmen, dass es eine Lösung geben muss. Mit dem Beispiel von Spedweb funktioniert sogar das an "An Breite anpassen" im Opera in der Höhe und Breite. smile.gif

OT: Bei der Kontrolle meiner Testseite mit im Iframe eingebundener externer dynamischer Seite habe ich übrigens festgestellt dass FF, Opera und IE die Breite und Höhe in px nicht genau gleich interpretieren.
Olaf
Daniel wollte sagen das es solange klappt, solange Seite wie Iframe auf der gleichen Domain liegen. Unterscheiden sie sich ist Pumpe.
Vielleicht baut doch mal jemand ne Testseite!? Richtig mit unterschiedlichen Farben, das man es auch nachvollziehen kann. Einmal gleiche Domain, einmal unterschiedlich.

Ob dynamisch oder statisch spielt keine Rolle, warum macht ihr da Unterschiede!? Beim Browser kommt immer statisch an.
speedweb
Hallo,
ich habe auch eine lösungsansatz getestet mit dem es möglich wäre externe domains einzubinden.
doch leider habe ich dies im ff und opera nich zum laufen gebracht.

Es soll aber nicht das ziel sein externe Domains einzubinden,
sonder eine möglichkeit geben externe anwendungen von der gleichen domain
in eine Webseite zu integrieren.
Dazu bietet sich i-frame am besten an, nur mit dem Problem dass die höhe nicht flexiebel ist.
externe anwendungen haben nicht immer die selbe menge an content,
und es schaut nicht gerade gut aus wenn der i-frame mit der maximalen höhe definiert ist oder
es sich zwei scrollbars auf der seite befinden wink.gif wink.gif

gruss Thomas

PS. sobald ich dazukomme kann ich ein DEMO bei mir am Server einrichten
Daniel
ZITAT(speedweb @ Fri. 18. August 2006, 16:57) *
ich habe auch eine lösungsansatz getestet mit dem es möglich wäre externe domains einzubinden.
doch leider habe ich dies im ff und opera nich zum laufen gebracht.

Wie sah der denn aus?

ZITAT(speedweb @ Fri. 18. August 2006, 16:57) *
Es soll aber nicht das ziel sein externe Domains einzubinden,
sonder eine möglichkeit geben externe anwendungen von der gleichen domain
in eine Webseite zu integrieren.

Ja, klar. Der Einwurf war auch eher an andere adressiert, die deine Lösung bei sich einbauen und feststellen, dass es für sie nicht funktioniert.

ZITAT(speedweb @ Fri. 18. August 2006, 16:57) *
Dazu bietet sich i-frame am besten an, nur mit dem Problem dass die höhe nicht flexiebel ist.


Ein Nachteil von I-Frames, den man auch nicht umgehen kann, ist, dass man nicht direkt auf Unterseiten in dem I-Frame linken kann. (Der normalsterbliche Surfer kann es nicht) In der Browser-Adresszeile steht immer die URL der Sefrengo-Seite, auf der der I-Frame eingebunden wurde, egal wieviele Links der User schon in dem I-Frame weitergesurft ist.

Ein anderer Nachteil, der aber per JavaScript umgangen werden kann, hängt mit dem Scrollen zusammen. Angenommen, man hat eine laaange Seite in den (auto-gesizten) I-Frame geladen und der User hat die Seite runtergescrollt. Nun klickt er auf einen Link in dem I-Frame. Der I-Frame lädt neu, aber die Seite bleibt so weit runtergescrollt. Sehr verwirrend für den User, denn er muß nun die Seite per Hand wieder an den Anfang scrollen.
Wie gesagt, dass kann man mit JavaScript umgehen (auch hier gilt: nur auf der gleichen Domain)
QUELLTEXT
parent.scrollTo(0,0);
z.B. in die resize_me Funktion von speedweb* einfügen:
CODE
<script type="text/javascript">
<!--
function resize_me()
{
if(document.getElementById)
{
try
{
intDiff = (document.all||window.opera)?3:0;intDiff += (window.opera)?4:0;
objBody = document.getElementsByTagName('body')[0];
objBody.style.margin = 0;objBody.style.overflow = 'hidden';
objBody.innerHTML = '<div>' + objBody.innerHTML + '</div>';
parent.document.getElementsByName(self.name)[0].style.height
= objBody.firstChild.offsetHeight + intDiff;
parent.scrollTo(0,0);
}
catch(e)
{
return true;
}
}
}
window.onload=resize_me;
//-->
</script>
ole
HI ich misch mich mal gerade kurz ein ...
Ich bin ein absoluter Code Noob... also versteh ich das Skript leider kaum bis garnicht. aber es funktioniert auf meiner Seite super... leider habe ich probleme in ff dort funktioniert es garnicht die größe wird einfach nicht angepasst... das geht nur in Opera kann mir jemand sagen ob das bekannt ist odre ob man das skript noch umschreiben muss kann:::? währe über eure Hilfe sehr dankbar auch wenn das hier schon ein bischen äler ist...

mfg ole
feniweb
@ole
Was wird nicht angepasst die Schriftgrösse oder das Layout?

Opera und IE7 haben eine Zoom-Funktion die können jede Seite vergrössern. rolleyes.gif


Gruss
Dieses ist eine vereinfachte Darstellung unseres Foreninhaltes. Um die detaillierte Vollansicht mit Formatierung und Bildern zu betrachten, bitte hier klicken.
Invision Power Board © 2001-2024 Invision Power Services, Inc.