Online PDF-Präsentation
Ingrid
- php
1 Sven Rautenberg2 Martin_Online0 Richard Rüfenacht0 Martin_Online0 Tom0 Tom
Hallo Ihr Lieben,
ich habe mal wieder ein Problem ...
Ich möchte Geren eine ganz schlanke Version einer online Präsentation während einer Telefonkonferenz machen. Eigentlich soll "nur" eine PDF-Datei vom Moderator weitergeklickt werden und alle anderen sollen sich das ansehen können. Dabei sollen sich die anderen Teilnehme NICHT kompliziert über eine Seite einloggen ... ich möchte das auf meinem Server machen, die Datei wird nur zur Telko hochgeladen und dann wieder gelöscht ...
Habt Ihr eine Idee / Lösung für PHP?
Ja, ich weiss es gibt Komplettlösungen und alles komfortabler, aber das kann ich den Teilnehmen nicht zumuten - bin froh dass sich die (alten) Herren zur Telko überreden haben lassen ;-)
Vielen Dank für Eure liebe Hilfe,
Ingrid
Moin!
Ich möchte Geren eine ganz schlanke Version einer online Präsentation während einer Telefonkonferenz machen. Eigentlich soll "nur" eine PDF-Datei vom Moderator weitergeklickt werden und alle anderen sollen sich das ansehen können. Dabei sollen sich die anderen Teilnehme NICHT kompliziert über eine Seite einloggen ... ich möchte das auf meinem Server machen, die Datei wird nur zur Telko hochgeladen und dann wieder gelöscht ...
Habt Ihr eine Idee / Lösung für PHP?
Simpel: Das PDF irgendwo hochladen, den Teilnehmern die URL per Mail mitteilen (oder als Attachment direkt in die Mail), und der Moderator sagt "Auf Seite 2..." - und alle klicken in ihrem PDF-Dokument auf Seite 2.
Nix interaktives mit "nur einer klickt, alle anderen konsumieren".
- Sven Rautenberg
Hallo Ingrid,
Ja, ich weiss es gibt Komplettlösungen und alles komfortabler, aber das kann ich den Teilnehmen nicht zumuten - bin froh dass sich die (alten) Herren zur Telko überreden haben lassen ;-)
mach aus deinem PDF einzelne JPG Bilder, lade die auf ein Webspace vielleicht mit kleinen Vorschaubildern und somit könnt ihr während eurer Telefonkonferenz durch die einzelnen Seiten klicken. Als Service kannst du die PDF zum Download anbieten.
Hallo Ingrid,
Ja, ich weiss es gibt Komplettlösungen und alles komfortabler, aber das kann ich den Teilnehmen nicht zumuten - bin froh dass sich die (alten) Herren zur Telko überreden haben lassen
wenn es wirklich eine PDF sein soll, kannst du auch auf einen Anbieter zurückgreifen. http://issuu.com/ mit diesem habe ich bis jetzt sehr gute Erfahrungen gemacht und ist kostenlos.
Alternativ kannst du auch diesen http://de.slideshare.net/ nehmen. Auch dieser ist kostenlos.
Hallo Ingrid
Eigentlich soll "nur" eine PDF-Datei vom Moderator weitergeklickt werden und alle anderen sollen sich das ansehen können.
Habt Ihr eine Idee / Lösung für PHP?
Ja, hab ich. Das ist aber nicht trivial. „Server-Sent Events“ ist dein Stichwort oder auch „Server-Push“ und „bidirektionale Kommunikation“.
Mit besten Grüssen
Richard
Hello,
Eigentlich soll "nur" eine PDF-Datei vom Moderator weitergeklickt werden und alle anderen sollen sich das ansehen können.
Habt Ihr eine Idee / Lösung für PHP?
Muss es unbedingt ein PDF mit mehreren Seiten sein, oder könnten es auch mehrere Dateien sein?
Martin hatte ja außerdem schon JPGs vorgeschlagen.
Die könnte man mittels AJAX oder JS mit Frameset aufrufen. Der AJAX-Request holt sich seine URL aus einer zentralen Datei. Aller 2 Sec. ein Request müsste doch genügen.
Ja, hab ich. Das ist aber nicht trivial. „Server-Sent Events“ ist dein Stichwort oder auch „Server-Push“ und „bidirektionale Kommunikation“.
Wenn man es so kompliziert machen will, eignet sich diese Klasse bestimmt als Basis
https://forum.selfhtml.org/?t=217753&m=1496753
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Tom
Ingrid sucht nach einer einfachen Alternative zur Video-Konferenz, wo alles gut funktionieren würde.
Eigentlich soll "nur" eine PDF-Datei vom Moderator weitergeklickt werden und alle anderen sollen sich das ansehen können.
Muss es unbedingt ein PDF mit mehreren Seiten sein, oder könnten es auch mehrere Dateien sein?
Martin hatte ja außerdem schon JPGs vorgeschlagen.
Auf diese Frage wollte ich zunächst nicht eingehen, weil das erst nach dem Entscheid über den Weg der Aktualisierung sinnvoll ist. Wenn nicht der Screen des Moderator übertragen wird, ist PDF kaum möglich. Dann ist es aber auch nicht angebracht, aus einem guten Vektorformat ein verlustbehaftetes Pixelformat zu erstellen.
Die könnte man mittels AJAX oder JS mit Frameset aufrufen. Der AJAX-Request holt sich seine URL aus einer zentralen Datei. Aller 2 Sec. ein Request müsste doch genügen.
Ja, das ist so machbar. Ich erwähnte diese Möglichkeit nicht, weil sie nicht einfacher als Server-Sent-Events ist, aber entscheidende Nachteile hat.
Wenn man es so kompliziert machen will, eignet sich diese Klasse bestimmt als Basis
https://forum.selfhtml.org/?t=217753&m=1496753
Ja, kann man so sagen.
Beste Grüsse Richard
Ich erwähnte diese Möglichkeit nicht, weil sie nicht einfacher als Server-Sent-Events ist, aber entscheidende Nachteile hat.
Mathias
Hallo Mathias
- Ajax: Nahezu überall verfügbar
Das ist schon klar. Deshalb verwende auch ich Ajax, aber das betrifft einzelne Clients. Hast du Erfahrung mit einer grösseren Anzahl gleichzeitiger Nutzer? Wie verhält sich der Server, wenn z.B. 300 Clients im Sekundentakt Requests senden?
Mit besten Grüssen
Richard
Hallo,
Klassisches HTTP ist natürlich nicht gedacht und letztlich nicht geeignet für solche Zwecke. Ich habe es nur aufgeführt, weil Tom es genannt hatte und es immer noch die simpelste Lösung ist. Wie weit die einen bringt, hängt völlig davon ab, wieviele Clients man erwartet, was für Daten übertragen werden müssen und was die gewünschte Antwortzeit ist. Auch simples HTTP ist skalierbar, wenn man nur genug in Performance-Optimierung, Serverkapazität und Bandbreite/Traffic investiert. Da kommt man mit Websockets definitiv einfacher ans Ziel.
Mathias
Hallo Tom
Wenn man es so kompliziert machen will, eignet sich diese Klasse bestimmt als Basis
https://forum.selfhtml.org/?t=217753&m=1496753
Damit hier kein falscher Eindruck entsteht: Server-Sent Events und Web-Sockets sind zwei verschiedene Dinge. Bei Server-Sent Events hält der Client eine Verbindung zum Server offen, über die der Server senden kann, aber nicht umgekehrt.
Mit besten Grüssen
Richard
Hello Richard,
Wenn man es so kompliziert machen will, eignet sich diese Klasse bestimmt als Basis
https://forum.selfhtml.org/?t=217753&m=1496753Damit hier kein falscher Eindruck entsteht: Server-Sent Events und Web-Sockets sind zwei verschiedene Dinge. Bei Server-Sent Events hält der Client eine Verbindung zum Server offen, über die der Server senden kann, aber nicht umgekehrt.
Dann sag's doch einfach auf Deutsch oder beschreibe es mit einfachen Worten, was da passieren soll.
"Verbindung offen halten" ist eine nicht unkritische Redewendung.
Der Client kann bei HTTP keine Verbindung offen halten, sondern nur der Server.
Wenn der Client trotzdem die Verbindung während der Response-Phase vorher beenden kann, dann geschieht dies auf TCP-Ebene. Der Client wird dann sozusagen beendet (also die zuständige Instanz). Bei PHP wäre da das Stichwort "user-abort" angebracht.
http://de1.php.net/manual/en/function.ignore-user-abort.php
Das "offen halten" von Seiten des Servers ist aber unter HTTP auch nicht unkritisch, da jeder Hob auf der Strecke entscheiden darf, ob er Bytes zu Pakten zusammensammelt, bis er sie weiterleitet.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello Richard,
Damit hier kein falscher Eindruck entsteht: Server-Sent Events und Web-Sockets sind zwei verschiedene Dinge. Bei Server-Sent Events hält der Client eine Verbindung zum Server offen, über die der Server senden kann, aber nicht umgekehrt.
Das ist zwar auch nicht auf Deutsch, aber mMn eine ganz gute Beschreibung, was da passieren soll,
https://today.java.net/article/2010/03/31/html5-server-push-technologies-part-1#sse,
auch wenn sie aus dem Java-Umfeld stammt. das ist hier aber mMn nebensächlich.
Das Problem dabei ist, im Gegensatz zu einem AJAX-Request, dass auf dem Server tatsächlich die ganze Zeit eine Instanz an den Client gebunden bleibt. Da sind 150 Children (Standardeinstellung) schnell verbraucht.
Ein kurzer Ajax-Request hält eine HTTP-Server-Instanz aber z.B. nur für 8ms gebunden.
Websockets sind insofern günstiger, da hier eine Serverinstanz die Requests typischerweise einreiht in eine FiFo-Struktur, und daher mehrere Clients bedienen kann. Hier ist als Last an der Schnittstelle im Prinzip nur der reine Bytestream zu spüren.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Tom
Websockets sind insofern günstiger, da hier eine Serverinstanz die Requests typischerweise einreiht in eine FiFo-Struktur, und daher mehrere Clients bedienen kann. Hier ist als Last an der Schnittstelle im Prinzip nur der reine Bytestream zu spüren.
An den Vorzügen von WebSockets zweifle ich gar nicht. Die gestellte Aufgabe kann damit gelöst werden. Mit Server-Sent Events steht aber eine viel einfachere Methode zur Verfügung, die serverseitig nur ein einfaches PHP-Skript erfordert und keine komplizierte Programmierung oder den Einsatz von Node.js.
Diskussionen über Vor- und Nachteile oder technische Details sind interessant, bringen aber wenig. Aussagekräftig sind letzlich die praktischen Umsetzungen. Die Aufgabe ist klar: Ein Moderator soll von seinem Laptop aus bei ungefähr einem Dutzend Teilnehmer einer Telefonkonferenz deren Bildschirme laufend aktualisieren, ohne dass diese selbst klicken müssen, was erfahrungsgemäss zum Chaos führt.
Selbst Erfahrung habe ich mit sehr ähnlichen Anwendungen mit Ajax, bei einzelnen oder nur wenigen Clients. Das habe ich auch mit Server-Sent Events gelöst, was alles in allem einfacher ist. Das Problem bei Server-Sent Events ist, dass es im IE nicht geht, auch nicht im IE 11, erfordert im Zweifelsfall also einen Ajax-Fallback. WebSockets verwende ich für WebRTC im Rahmen von eLearning.
Noch ein Wort zu Ingrids Vorhaben: Üblicherweise wird das mit bekannter Video-Konferenz-Technik umgesetzt. Sie nannte einen plausiblen Grund, das nicht zu tun. Ich würde trotzdem die Übertragung mit der Webcam machen, der Moderator kann dabei seinen Screen auf die Kamera schalten. Beim Videostream gäbe es die ganze Problematik nicht.
Mit besten Grüssen
Richard
Hello Richard,
das einfachste wäre mMn eine Framelösung, in der in einem (ggf. auch versteckten) Frame eine kleine JavaScript-Funktion residiert, die sich selber wieder aufruft und eine Ressource auf dem zentralen Server ausliest. In dieser steht aktuell die URL der uzu ladenden Ressource für das andere Frame. Immer wenn die sich ändert, wird das Hauptframe aktualisiert.
Und die URL in der Steuer-Ressource kann dann jeweils mit einem kleinen PHP-Scriptlein erneuert werden.
Wenn ich nachher noch Lust dazu habe, probier ich das mal aus.
Das ist dann AJAX für Arme. Das haben wir schon 2000 so gemacht, als JavaScript noch was Böses war.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Server-Sent Events
War das nicht so das die/einige/ein Browser (ich möcht meinen ich hab das hier vor 'ner Weile gelesen, kann mich aber nicht genau erinnern und finde den Post nicht) SSE über Polling bewerkstelligen?
MfG
bubble
Hello,
War das nicht so das die/einige/ein Browser (ich möcht meinen ich hab das hier vor 'ner Weile gelesen, kann mich aber nicht genau erinnern und finde den Post nicht) SSE über Polling bewerkstelligen?
Dann ist es ja kein SSE mehr. Das wäre dann eine Ersatzlösung.
Das Problem ist, dass HTTP genau DIE Fähigkeiten herausoperiert wurden, die nun wieder emuliert oder eingebaut werden sollen. MMn ist da die Weiterentwicklung der Websockets (die eigentlich im Netz nichts neues sind, nur in Browsern) und die Befähigung der Clients dafür.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Ingrid,
hab ich durch Zufall gefunden, vielleicht ist es ja etwas für dich http://animatron.com/
Hello 'Ingrid',
ich habe da mel ein Beispiel fertig gemacht.
Guckst Du unter
http://selfhtml.bitworks.de/htdocs/diashow/
hier stehen die anzuzeigenden Dateien:
selfhtml.bitworks.de/htdocs/diashow/pages
Diese Seite müssen die Zuschauer aufrufen:
selfhtml.bitworks.de/htdocs/diashow/client.html
Dies ist das Startframe für die Benutzer, bis eine andere Seite ausgewählt wurde:
selfhtml.bitworks.de/htdocs/diashow/content.html
Dieses Frame kontrolliert das Weiterschalten:
selfhtml.bitworks.de/htdocs/diashow/control.php
Hier steht das zu ladene Anzeigeframe drin:
selfhtml.bitworks.de/htdocs/diashow/data.php
dies ist der Controller für den Vortragenden:
selfhtml.bitworks.de/htdocs/diashow/selector.php
Viel Spaß beim Spielen.
Denkt dran, dass im Moment noch jeder den Meister machen darf :-)
Das Ganze ist nur rudimentär zusammengeschustert, um einfach mal meine Gedanken zu sortieren.
Vielleicht hat hier ja jemand Lust dazu, das mit mir zur Wiki-Reife zu bringen und die anderen drei Lösungswege hinzzufügen:
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
Hello 'Ingrid',
ich habe da mel ein Beispiel fertig gemacht.
Guckst Du unter
http://selfhtml.bitworks.de/diashow/
hier stehen die anzuzeigenden Dateien:
selfhtml.bitworks.de/diashow/pages/Diese Seite müssen die Zuschauer aufrufen:
selfhtml.bitworks.de/diashow/client.htmlDies ist das Startframe für die Benutzer, bis eine andere Seite ausgewählt wurde:
selfhtml.bitworks.de/diashow/content.htmlDieses Frame kontrolliert das Weiterschalten:
selfhtml.bitworks.de/diashow/control.phpHier steht das zu ladene Anzeigeframe drin:
selfhtml.bitworks.de/diashow/data.phpdies ist der Controller für den Vortragenden:
selfhtml.bitworks.de/diashow/selector.phpViel Spaß beim Spielen.
Denkt dran, dass im Moment noch jeder den Meister machen darf :-)
Die Links eben nochmal korrigiert...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
ich habe da mel ein Beispiel fertig gemacht.
Guckst Du unter
http://selfhtml.bitworks.de/diashow/
PDFs machen Probleme.
Scheinbar wird die Kontrolle des Frames an das Plug-In für das PDF-Lesen übergeben. Damit ist das Frame dann kaputt... Ich weiß jedenfalls nicht, wie man wieder aus dem PDF rauskommt.
Auf dem Android-Kitkat klappt das schon gar nicht, da pdfs hier nur heruntergeladen werden und nicht geöffnet. Die URL des Frames scheint dann aber auch nicht umgeschaltet zu werden. Der Download startet damit mit jedem Tick des JavaScripts
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Tom
ich habe da mel ein Beispiel fertig gemacht.
Ich gratuliere dir, das ist doch eine einfache und brauchbare Lösung.
PDFs machen Probleme.
Scheinbar wird die Kontrolle des Frames an das Plug-In für das PDF-Lesen übergeben. Damit ist das Frame dann kaputt... Ich weiß jedenfalls nicht, wie man wieder aus dem PDF rauskommt.
Das funktioniert mit PDF nicht. Ich mache das so: Die Präsentation besteht aus einer nummerierten Folge von statischen HTML-Seiten. (Die können bei Bedarf ganz einfach und automatisch aus PDFs oder PowerPoint-Präsentationen erstellt werden.)
Der Request besteht dann nur aus der Nummer (00 bis 99). Aufgerufen werden die einzelnen Seiten, JavaScript wird aus einer externe Datei geladen. Frames sind dadurch nicht nötig (gibt es in HTML5 nicht mehr).
Mit besten Grüssen
Richard
Hello,
ich habe da mel ein Beispiel fertig gemacht.
Ich gratuliere dir, das ist doch eine einfache und brauchbare Lösung.
PDFs machen Probleme.
Auf dem alten IE 8.x geht das mit den PDFs. Der Firefox kackt ab, das Android-Pad lädt sich tod. Dort wird die URL nicht übernommen für das Anzeige-Frage, sodass das immer wieder ein neuer Download gestartet wird.
Diesen Kram würde ich auch gerne noch klären, bovor ich "Teil 1" für einen Wiki-Artikel daraus mache.
Das funktioniert mit PDF nicht. Ich mache das so: Die Präsentation besteht aus einer nummerierten Folge von statischen HTML-Seiten. (Die können bei Bedarf ganz einfach und automatisch aus PDFs oder PowerPoint-Präsentationen erstellt werden.)
PDF nach HTML probier ich mal aus. Da gibt es ja auch Module.
Ich habe noch ein paar Kleinigkeiten wegen der notwendigen Cache-Umgehung für das steuernde JavaScript (bzw. dessen Frame-Source) nachgebessert. Sonst funktionierte die Steuerung beim Android-Pad nicht, wenn das über HSDPA verbunden war, nur per WLAN.
Ich werde jetzt noch gerne vagabundierenden Steuer-Scripte abfangen, also wenn das Steuerscript nicht im benannten Frame steht, sondern alleine, bzw. wenn eines der beiden benannten Frames nicht da ist. Dann hat die Zuweisung der URL auf .location.href ja keinen Sinn.
Gesucht wird immer noch jemand, der das Ganze mal mit Server-Sent-Events umsetzt ;-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Tom
Auf dem alten IE 8.x geht das mit den PDFs.
Das funktioniert auch im IE 11. Du kommst nur nicht mehr aus dem PDF-Reader heraus, ohne die PDF entsprechend zu bearbeiten. Das Konvertieren in HTML ist dann sinnvoller.
Ich werde jetzt noch gerne vagabundierenden Steuer-Scripte abfangen, also wenn das Steuerscript nicht im benannten Frame steht, sondern alleine, bzw. wenn eines der beiden benannten Frames nicht da ist. Dann hat die Zuweisung der URL auf .location.href ja keinen Sinn.
Das Problem hättest du beim Verzicht auf Frames gar nicht.
Gesucht wird immer noch jemand, der das Ganze mal mit Server-Sent-Events umsetzt ;-)
Wenn du mir eine wirklich sinnvolle Anwendung dafür nennst, können wir darüber reden. Was Ingrid machen wollte, ist so speziell, dass das wohl ein Einzelfall bleibt, der sich vermutlich eh in Wohlgefallen aufgelöst hat. Solange es um einzelne Clients geht, wird der Server durch die Request nicht besonders belastet. Ich will Server-Sent Events auch nicht besonders promoten, solange Microsoft sie nicht implementiert.
Mit besten Grüssen
Richard
Hello,
eine Frage ist offen geblieben aus meiner "Diashow", die ich aber bitte separat klären möchte:
Warum kann ich nicht mehr über den Namen des Frames zugreifen.
Sven erklärt das hier so schön.
http://aktuell.de.selfhtml.org/artikel/javascript/fensterzugriff/
parent.frames[0].location.href = neueUrl; // funktioniert
parent.frames[1].location.href = controlUrl; // funktioniert
parent.content.location.href = neueUrl; // funktioniert nicht mehr.
parent.control.location.href = controlUrl; // funktioniert nicht mehr.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
Warum kann ich nicht mehr über den Namen des Frames zugreifen?
Sven erklärt das hier so schön.
http://aktuell.de.selfhtml.org/artikel/javascript/fensterzugriff/parent.frames[0].location.href = neueUrl; // funktioniert
parent.frames[1].location.href = controlUrl; // funktioniertparent.content.location.href = neueUrl; // funktioniert nicht mehr.
parent.control.location.href = controlUrl; // funktioniert nicht mehr.
SelfHTML und Svens Eräuterungen treffen definitiv nicht mehr zu.
Die sollten also aus dem Web verschwinden oder korrigiert/ergänzt werden!
hier http://www.html-world.de/302/frames-objekt/
steht es so, wie es im Firefox auch funktioniert. Andere Browser habe ich noch nicht getestet.
parent.frames['content'].location.href = neueUrl; // funktioniert
parent.frames['control'].location.href = controlUrl; // funktioniert
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
parent.content.location.href = neueUrl; // funktioniert nicht mehr.
parent.control.location.href = controlUrl; // funktioniert nicht mehr.SelfHTML und Svens Eräuterungen treffen definitiv nicht mehr zu.
Dann machst du irgendetwas anderes falsch, oder es gibt einen anderen Fehler im Artikel. Diese Schreibweise jedenfalls ist immer noch verwendbar.
Die sollten also aus dem Web verschwinden oder korrigiert/ergänzt werden!
Ergänzt höchstens.
parent.frames['content'].location.href = neueUrl; // funktioniert
parent.frames['control'].location.href = controlUrl; // funktioniert
Das ist die explizitere Variante. Beides sollte funktionieren.
<frame name="foo" src="…">
erzeugt eine globale Variable foo beim window-Objekt des Framesets. Und einen Eintrag unter frames.foo.
Ist auch so in HTML5 standardisiert:
http://www.w3.org/TR/html5/browsers.html#the-window-object
http://www.w3.org/TR/html5/browsers.html#dom-window-nameditem
http://www.w3.org/TR/html5/browsers.html#dom-frames
Wie sich dort lesen lässt, liefert frames lediglich das window-Objekt selbst zurück, beide Schreibweisen sind inhaltlich also völlig identisch.
Mathias
Hello,
parent.content.location.href = neueUrl; // funktioniert nicht mehr.
parent.control.location.href = controlUrl; // funktioniert nicht mehr.SelfHTML und Svens Eräuterungen treffen definitiv nicht mehr zu.
Dann machst du irgendetwas anderes falsch, oder es gibt einen anderen Fehler im Artikel. Diese Schreibweise jedenfalls ist immer noch verwendbar.
Die sollten also aus dem Web verschwinden oder korrigiert/ergänzt werden!
Ergänzt höchstens.
parent.frames['content'].location.href = neueUrl; // funktioniert
parent.frames['control'].location.href = controlUrl; // funktioniertDas ist die explizitere Variante. Beides sollte funktionieren.
<frame name="foo" src="…">
erzeugt eine globale Variable foo beim window-Objekt des Framesets. Und einen Eintrag unter frames.foo.Ist auch so in HTML5 standardisiert:
http://www.w3.org/TR/html5/browsers.html#the-window-object
http://www.w3.org/TR/html5/browsers.html#dom-window-nameditem
http://www.w3.org/TR/html5/browsers.html#dom-framesWie sich dort lesen lässt, liefert frames lediglich das window-Objekt selbst zurück, beide Schreibweisen sind inhaltlich also völlig identisch.
Ich habe es jetzt erstmal nur auf Firefox 29.0.1 ausprobiert. Der macht es eben nicht mehr.
Und einen Fehler zeigt er auch nicht an, er schreddert dann nur das Frameset. Es wird nur noch die Ressource vom ersten Frame dirket im Window angezeigt.
BTW:
Woran könnte es liegen, dass mir der Firefox keinen Quelltext der Frames mehr anzeigt?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Ich habe es jetzt erstmal nur auf Firefox 29.0.1 ausprobiert.
frameset.html:
<!DOCTYPE html>
<frameset rows="50%,50%">
<frame name="a" src="a.html">
<frame name="b" src="b.html">
</frameset>
a.html:
<!DOCTYPE html>
<h1>a.html</h1>
b.html
<!DOCTYPE html>
<h1>b.html</h1>
<button onclick="console.log(parent.frames.a)">parent.frames.a</button>
<button onclick="parent.frames.a.location.href = 'b.html'">location.href</button>
Funktioniert tadellos im Firefox 30.
Woran könnte es liegen, dass mir der Firefox keinen Quelltext der Frames mehr anzeigt?
Kontextmenu > This Frame > View Frame Source
funktioniert bei mir.
Mathias
Hello,
<!DOCTYPE html>
<h1>b.html</h1>
<button onclick="console.log(parent.frames.a)">parent.frames.a</button>
<button onclick="parent.frames.a.location.href = 'b.html'">location.href</button>
Na klar!
DU hast es ja auch nicht so gemacht, wie in SelfHTML und von Sven beschrieben, sondern scheinbar richtig ;-P
<http://aktuell.de.selfhtml.org/artikel/javascript/fensterzugriff/>
parent.frames.a.location.href
^^^^^^
das fehlt nämlich in den Beschreibungen. Dass es dann kracht, ist mir irgendwie einleuchtend.
Ich hatte es mir zwar schon fast gedacht, aber nicht ausprobiert, weil dort stand, dass "parent" bereits ein reservierter Bezeichner sei, um aus einem Frame an die Eigenschaften anderer Frames heranzukommen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
![](http://selfhtml.bitworks.de/Virencheck.gif)
--
☻\_
/▌
/ \ Nur selber lernen macht schlau
[Die ultimative Seite für Selbermacher](http://getscript.de/)
DU hast es ja auch nicht so gemacht, wie in SelfHTML und von Sven beschrieben, sondern scheinbar richtig ;-P
Ich hatte beides probiert; in dem Code, den ich gepostet habe, war nur noch der zweite Test drin.
Die andere Variante …
<button onclick="console.log(parent.a)">parent.a</button>
<button onclick="parent.a.location.href = 'b.html'">location.href</button>
… funktioniert ebenfalls im Firefox 30. Und Chrome, Safari, Opera…
Muss auch in einem HTML5-konformen Browser, habe ich ja schon gezeigt.
Mathias
Hello,
Ich hatte beides probiert; in dem Code, den ich gepostet habe, war nur noch der zweite Test drin.
Die andere Variante …
<button onclick="console.log(parent.a)">parent.a</button>
<button onclick="parent.a.location.href = 'b.html'">location.href</button>
>
> … funktioniert ebenfalls im Firefox 30. Und Chrome, Safari, Opera…
>
Ärgerlich. Jetzt habe ich den 29.0.1 gerade auch mit dem 30.x übergebügelt.
Aber ich habe noch einen 3.15 oder so ähnlich und einen IE8.x drauf. Das probiere ich morgen nochmal aus.
Tom vom Berg
![](http://selfhtml.bitworks.de/Virencheck.gif)
--
☻\_
/▌
/ \ Nur selber lernen macht schlau
[Die ultimative Seite für Selbermacher](http://getscript.de/)
Hello,
parent.frames['content'].location.href = neueUrl; // funktioniert
parent.frames['control'].location.href = controlUrl; // funktioniert
Wie muss ich das machen, um durch das Array der Frames zu iterieren
parent.frames[0]
parent.frames[1]
usw.
um den Namen des Frames abzufragen?
Hat der eine eigene Eigenschaft oder wir könnte ich dort herankommen, um das Verhalten des FF nochmal genauer unter die Lupe zu nehmen?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Wie muss ich das machen, um durch das Array der Frames zu iterieren
parent.frames[0]
parent.frames[1]
usw.um den Namen des Frames abzufragen?
Die name-Eigenschaft abfragen:
for (var i = 0, l = parent.frames.length; i < l; i++) {
alert(parent.frames[i].name);
}
http://de.selfhtml.org/javascript/objekte/window.htm#name
http://de.selfhtml.org/javascript/objekte/frames.htm#length (da steht der Code, den ich oben geschrieben habe, sogar ;))
Mathias