Inline-Frame 1.0.1-sf, Angepasst an Sefrengo |
Willkommen, Gast ( Anmelden | Registrierung ) [ Hilfe | Mitglieder | Suche ]
Inline-Frame 1.0.1-sf, Angepasst an Sefrengo |
Tue. 15. August 2006, 10:21
Beitrag
#1
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 201 Mitglied seit: 01.07.2006 Wohnort: CH Mitglieds-Nr.: 32 |
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. Inline_Frame_01_00_01.zip ( 3.77KB ) Anzahl der Downloads: 87 |
|
|
Tue. 15. August 2006, 10:48
Beitrag
#2
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 613 Mitglied seit: 30.06.2006 Mitglieds-Nr.: 30 |
Klasse, du nun auch als Entwickler, toll!!!
-------------------- |
|
|
Tue. 15. August 2006, 12:02
Beitrag
#3
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 201 Mitglied seit: 01.07.2006 Wohnort: CH Mitglieds-Nr.: 32 |
|
|
|
Tue. 15. August 2006, 14:12
Beitrag
#4
|
|
Advanced Member Gruppe: Members Beiträge: 81 Mitglied seit: 03.07.2006 Wohnort: Dornbirn / Vlbg. - Austria Mitglieds-Nr.: 83 |
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 |
|
|
Tue. 15. August 2006, 17:22
Beitrag
#5
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 613 Mitglied seit: 30.06.2006 Mitglieds-Nr.: 30 |
Lad doch mal irgendwo hin eine statische Demoseite, mal schauen vielleicht bekommen wir das gemeinsam hin.
-------------------- |
|
|
Wed. 16. August 2006, 12:17
Beitrag
#6
|
|
Advanced Member Gruppe: Members Beiträge: 81 Mitglied seit: 03.07.2006 Wohnort: Dornbirn / Vlbg. - Austria Mitglieds-Nr.: 83 |
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 |
|
|
Wed. 16. August 2006, 13:52
Beitrag
#7
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 613 Mitglied seit: 30.06.2006 Mitglieds-Nr.: 30 |
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. -------------------- |
|
|
Wed. 16. August 2006, 14:04
Beitrag
#8
|
|
Advanced Member Gruppe: Members Beiträge: 81 Mitglied seit: 03.07.2006 Wohnort: Dornbirn / Vlbg. - Austria Mitglieds-Nr.: 83 |
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 |
|
|
Wed. 16. August 2006, 14:18
Beitrag
#9
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 613 Mitglied seit: 30.06.2006 Mitglieds-Nr.: 30 |
Jo, Problem verstanden, es werden auch bei jedem Klick 20px mehr
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.... -------------------- |
|
|
Wed. 16. August 2006, 14:37
Beitrag
#10
|
|
Advanced Member Gruppe: Members Beiträge: 81 Mitglied seit: 03.07.2006 Wohnort: Dornbirn / Vlbg. - Austria Mitglieds-Nr.: 83 |
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 ) Wo die 20px herkommen kann ich auch noch nicht sagen........ Thomas |
|
|
Wed. 16. August 2006, 15:19
Beitrag
#11
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 613 Mitglied seit: 30.06.2006 Mitglieds-Nr.: 30 |
Wo die 20px herkommen kann ich auch noch nicht sagen........ Das kommt aus dem Script, du gibst immer 20 dazu, guck mal rein 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 -------------------- |
|
|
Wed. 16. August 2006, 15:30
Beitrag
#12
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 613 Mitglied seit: 30.06.2006 Mitglieds-Nr.: 30 |
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 -------------------- |
|
|
Wed. 16. August 2006, 16:45
Beitrag
#13
|
|
Advanced Member Gruppe: Members Beiträge: 81 Mitglied seit: 03.07.2006 Wohnort: Dornbirn / Vlbg. - Austria Mitglieds-Nr.: 83 |
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....... Thomas |
|
|
Wed. 16. August 2006, 22:38
Beitrag
#14
|
|
Advanced Member Gruppe: Members Beiträge: 81 Mitglied seit: 03.07.2006 Wohnort: Dornbirn / Vlbg. - Austria Mitglieds-Nr.: 83 |
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........ ) 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 Der Beitrag wurde von speedweb bearbeitet: Thu. 17. August 2006, 00:55 |
|
|
Thu. 17. August 2006, 21:49
Beitrag
#15
|
|
Advanced Member Gruppe: Members Beiträge: 54 Mitglied seit: 26.06.2006 Wohnort: Karlsruhe Mitglieds-Nr.: 3 |
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. -------------------- Technikwürze - Design & Webstandards Podcast |
|
|
Fri. 18. August 2006, 00:24
Beitrag
#16
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 201 Mitglied seit: 01.07.2006 Wohnort: CH Mitglieds-Nr.: 32 |
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. 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. |
|
|
Fri. 18. August 2006, 06:28
Beitrag
#17
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 613 Mitglied seit: 30.06.2006 Mitglieds-Nr.: 30 |
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. -------------------- |
|
|
Fri. 18. August 2006, 15:57
Beitrag
#18
|
|
Advanced Member Gruppe: Members Beiträge: 81 Mitglied seit: 03.07.2006 Wohnort: Dornbirn / Vlbg. - Austria Mitglieds-Nr.: 83 |
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 gruss Thomas PS. sobald ich dazukomme kann ich ein DEMO bei mir am Server einrichten Der Beitrag wurde von speedweb bearbeitet: Fri. 18. August 2006, 15:57 |
|
|
Sat. 19. August 2006, 01:50
Beitrag
#19
|
|
Advanced Member Gruppe: Members Beiträge: 54 Mitglied seit: 26.06.2006 Wohnort: Karlsruhe Mitglieds-Nr.: 3 |
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? 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. 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> -------------------- Technikwürze - Design & Webstandards Podcast |
|
|
Sun. 26. November 2006, 02:09
Beitrag
#20
|
|
Newbie Gruppe: Members Beiträge: 1 Mitglied seit: 26.11.2006 Mitglieds-Nr.: 405 |
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 |
|
|
Vereinfachte Darstellung | Aktuelles Datum: 22.9.24 - 03:44 |