Page 1 of 1

Problem bei mehreren iFrames mit {embed}

Posted: Fri Apr 17, 2009 2:55 pm
by katja1000
Hab kleines Problem bezüglich den iframes von Amazon.

Ich möchte mehrere iframes von amazon (einzeltitellinks), wo das jeweilige Produkt und der Preis abgebildet ist auf einer Seite einbinden. Folgende einstellungen habe ich wie hier beschrieben vorgenommen:

In den Optionen unter Seitenspezifische Meta-Daten:

Code: Select all

{embed header=true}
{literal}
<style type="text/css" media="screen"><!--
#myframe { height: 25em; }
--></style>
{/literal}
Und im Editor:

Code: Select all

{embed url='http://partnerlink'}
Das erste iframe wird angezeigt, die weiteren aber nicht. Hat jemand ne Lösung?

Re: Problem bei mehreren iFrames mit {embed}

Posted: Fri Apr 17, 2009 10:23 pm
by NaN
Das Problem ist folgendes:
Der Embed-Tag hat keine Ahnung davon, wie oft er im Template aufgerufen wird.
Das iFrame, welches er ausgeben soll, bekommt eine im Quellcode festgelegte ID, nämlich "myframe".
Du erhältst am Ende mehrere iFrames, die alle dieselbe ID haben.
Das allein führt schon dazu, dass bei einigen Browsern für das Javascript, das zur dynamischen Berechnung der Höhe zuständig ist, bereits nach dem ersten iFrame, das es mit dieser ID findet, die Sache erledigt ist (da IDs nur ein einziges Mal vorkommen dürfen).

Da das iframe mit display:none ausgegeben wird und erst durch das Javascript die Sichtbarkeit des ersten iframes (nach Berechnung der korrekten Höhe) auf display:block gesetzt wird, bleiben die nachfolgenden iframes alle unsichtbar.

Außerdem müsste man für mehrere iFrames das Javascript im Quellcode des Embed-Tags modifizieren.
Da gibt es eine Zeile mit folgendem Hinweis:

Code: Select all

//Input the IDs of the IFRAMES you wish to dynamically resize to match its content height:
//Separate each ID with a comma. Examples: ["myframe1", "myframe2"] or ["myframe"] or [] for none:
var iframeids=["myframe"]
Das allein wird aber nicht zu 100% funktionieren, da weiter unten im Quellcode steht:
return   "<__iframe id='myframe' ... "
Und genau hier liegt der Fehler.
Es bleibt dabei, dass mehrere iFrames dieselbe ID haben.

Ich habe den Tag mal etwas überarbeitet. (siehe Anhang)
Es gibt jetzt noch weitere Parameter.

iframe_id : (optional) ist die ID, die das iFrame bekommen soll. Standard ist "myframe";

iframe_id_list : (optional) eine Liste von IDs für jedes iFrame im Template durch Komma getrennt. Ist nur im Zusammenhang mit dem Parameter "header=true" sinnvoll. Der Parameter "iframe_id_list" sorgt dafür, dass man das Javascript nicht jedesmal selber neu ändern muss.

width: (optional)
height: (optional)
style: (optional) weitere stylesheets für das iframe

Bsp:

Code: Select all

{embed header=true iframe_id_list="myframe1, myframe2, myframe3"}
Und im Editor dann

Code: Select all

{embed url='http://partnerlink1' iframe_id="myframe1" height="500px"}
{embed url='http://partnerlink2' iframe_id="myframe2" style="height:25em"}
{embed url='http://partnerlink3' iframe_id="myframe3"}
Das Hauptproblem bei der dynamischen Berechnung der Höhe eines iframes ist, dass man dazu auf dessen Eigenschaft contentDocument zugreifen muss.
Das funktioniert allerdings nur, wenn der Inhalt des iframes vom selben Server geladen wird wie die Seite in der das iframe eingebettet ist, da man aus Sicherheitsgründen bei externen Inhalten keinen Zugriff auf contentDocument hat.
Dies führt ebenfalls dazu, dass das Javascript bei externen Inhalten nach dem ersten iframe abgebrochen wird und die nachfolgenden iframes nicht sichtbar werden.

Wenn Du genau weißt, wie hoch die iframes sein sollen, dann gib die Höhe mit Hilfe des Parameters "height" an.
Oder mit dem Parameter "style".
Das header-zeugs kannst Du Dir dann sparen.

ps: nach dem Download des Anhangs die Endung .txt entfernen und die Datei in den Ordner "plugins" kopieren.

Re: Problem bei mehreren iFrames mit {embed}

Posted: Sun Apr 19, 2009 5:40 pm
by NaN
Okay...

hab gerade gesehen, dass mit der aktuellen Version des CMS 1.5.4 das alles schon eingebaut ist.
Bin von dem {embed}-Tag ausgegangen der im forge zum download bereitsteht.
Es bleibt aber dabei: da man bei externen Inhalten nicht auf die Eigenschaft contentDocument zugreifen darf, wird das Javascript bereits nach dem ersten iFrame abgerochen.
Und somit bleiben die nachfolgenden iFrames unsichtbar.

Re: Problem bei mehreren iFrames mit {embed}

Posted: Tue Apr 21, 2009 7:34 pm
by el17
Hallo,
mit

Code: Select all

<link rel="icon" href="ani.gif" type="image/gif">
ist auch ein animiertes gif in der Grösse 16x16px darstellbar. . .
und mit ein wenig Geschick kann die z.B. Palme winken. . .

chears mate


S O R R Y , kp warum das in diesem Thread gepostet wurde. . . kopfeinzieh

Re: Problem bei mehreren iFrames mit {embed}

Posted: Tue Apr 21, 2009 8:29 pm
by NaN
Ähm... bist Du im falschen Board?

Re: Problem bei mehreren iFrames mit {embed}

Posted: Tue Apr 21, 2009 9:03 pm
by NaN
el17 wrote: S O R R Y , kp warum das in diesem Thread gepostet wurde. . . kopfeinzieh
Irgendwas scheint mit dem Forum in letzter Zeit nicht zu stimmen...