• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage iFrame dem Inhalt anpassen

miqst

Neues Mitglied
Mein Werbenetzwerk bietet async-Codes an, mit denen ich Werbung ohne Einbußen beim Seitenaufbau einbinden kann. Das Problem mit diesen Anzeigen ist jedoch, dass Sie eine festgelegte iFrame-Größe haben, d.h. falls die Anzeige leer ist, sieht man immernoch einen großen weißen Brocken auf meiner Seite. Das sieht natürlich unschön aus.

Ich habe bereits mit height und width:auto versucht das Ganze einzuschränken, das geht jedoch nicht, da sich der Anzeigencode nicht anpasst, sondern eine andere feste Größe annimmt.

Ich kann bei meinem Werbenetzwerk jedoch einen sog. Default-Code festlegen, so dass dann falls die Anzeige leer ist ein bestimmter Code über ein iFrame eingebunden wird. Auch hier habe ich einiges funktioniert, geht nicht.

Habt ihr Ideen, wie ich den iFrame der Größe anpassen kann und falls keine Anzeige leer ist ein display:none daraus machen kann?
 
Das Problem ist, dass du aus Sicherheitsgründen nicht mit JavaScript an den Inhalt des <iframe> kommst, zumindest wenn der wie bei Werbung aus anderen Domains als die Basispage kommt. Man kommt glaub aus dem gleichen Grund nicht mit Ajax im Hintergrund an den Inhalt der Werbeseite. Wenn du die URL des <iframe> kennst, dann könntest versuchenden, den Inhalt über PHP abzurufen und zu analysieren und über Ajax dann das PHP-Ergebnis abfragen und dann eventuell auf display:none setzen.

Nachtrag: @Spicelab: Menno, warst wieder schneller :D
 
Mit der Formatierungssprache CSS (= Wahl des Forums) zumindest nicht ;)

Mit JavaScript nur dann, wenn die im iFrame eingebundene Seite auf der gleichen Domain liegt (Stichwort: Same-Origin-Policy), was in Deinem Fall offensichtlich nicht der Fall ist.
Mein Werbenetzwerk hat gesagt, dass man da was mit CSS machen kann.
 
Das habe ich erhalten vom Werbenetzwerk, vielleicht hilft es euch ein wenig weiter:

"Wieso benutzen Sie eigentlich ein iframe und async zur gleichen Zeit?
Die machen doch eigentliche das gleiche?

Wegen der Bannergrößenänderung im Passback kann ich nicht weiterhelfen.
Da müssten Sie bei sich im css etwas ändern bzw. Regeln erstellen."

Ich hatte ursprünglich vor statt einen weißen Block ein alternatives Werbeskript von einem anderen Werbeanbieter zu laden, aber das Problem da ist, dass die Werbung nicht das gleiche Format hat wie das vom Werbenetzwerk somit bleibt da noch eine kleine weiße Stelle übrig. Vielleicht könnt man da was machen.

Z.B.: Falls das Skript vom alternativen Werbenetzwerk erkannt wird, CSS iframe-Änderung durchsetzen. Die iframe-Änderung kann man auch ändern, nur muss sie halt dynamisch sein und erkennen falls ein alternatives JS-Skript geladen wird.
 
Naja, die Werbung könnte statt dem iFrame auch mittels serverseitiger Scriptsprache in einem <div></div> eingeblendet werden. Das passt sich dann dem Inhalt automatisch an.
 
Da kann ich leider nichts ändern; ich binde nur ein Script ein, der iframe wird automatisch vom JS-Script geladen, der non-asnyc-Code funktioniert perfekt und passt sich auch alternativen Werbeformaten an, falls diese in den Optionen als "Default-Code" festgelegt wurde, aber komischerweise geht das mit dem async-Code nicht.
 
Okay, mein Vorschlag wäre, dass man per JS erkennt ob ein bestimmtes Skript geladen wurde und dann eine CSS-Änderung durchsetzt. Wäre das denn so möglich oder ist es besser auf PHP zu setzen wie @NetAktiv empfohlen hatte.
 
Ich habe zwar noch nie Werbung in eine Website integriert, aber ich kann schon mal sagen dass du den PHP Lösungsansatz besser wieder schnell vergessen solltest.

Für iframe-Autosize gibt es zB so etwas:
http://davidjbradshaw.github.io/iframe-resizer/

Ansonsten denke ich schon, dass das Werbenetzwerk entsprechende Anleitungen/Codes bereitstellt. Ist eigentlich auch nicht unsere Aufgabe, die Software eines anderen Unternehmens zu debuggen.
 

Hallo Scbawik,
hast du dir die Sources mal angesehen? Irgendwie müssen die doch an den Inhalt des <iframe> kommen und das ist ganz entgegen meiner bisherigen Annahme, dass dies nicht geht. Es würde mich nun brennend interessieren, ganz grob zu verstehen, wie die den Inhalt des <iframe> feststellen können, um dann die Anpassung dynamisch auch x-Domain durchführen zu können.
Grüße, Rainer
 
Hallo Scbawik,
hast du dir die Sources mal angesehen? Irgendwie müssen die doch an den Inhalt des <iframe> kommen und das ist ganz entgegen meiner bisherigen Annahme, dass dies nicht geht. Es würde mich nun brennend interessieren, ganz grob zu verstehen, wie die den Inhalt des <iframe> feststellen können, um dann die Anpassung dynamisch auch x-Domain durchführen zu können.
Grüße, Rainer

Habe es gerade ausprobiert und es funktioniert natürlich nur, wenn man die Sources von beiden Frames bearbeiten kann (via postMessage), was hier aber nicht der Fall ist.

Jedenfalls wird es sehr wahrscheinlich mit dem Script des Werbenetzwerkes genau so gelöst - diese haben ja die Möglichkeit beide Sources zu bearbeiten. Vorausgesetzt es ist überhaupt so gedacht dass die Größe der Werbung dynamisch ist, vielleicht hat es der TE auch einfach anderweitig verbockt. So etwas habe ich zumindest noch nie gesehen, normalerweise sind es fixe Größen (Wie auch hier im Forum).
 
Zuletzt bearbeitet:
wenn man die Sources von beiden Frames bearbeiten kann
Das dachte ich mir fast schon, nachdem ich diese Masse von Callback Aufrufen gesehen habe.

Für das Ursprungsproblem gibt es meines Erachtens keine JavaScript Lösung, außer der Hersteller stellt etwas bereit. Ich kann mir unabhängig davon auch nicht vorstellen, dass man
a) gemietete Werbeflächen frei lässt
b) dem Homepage Betreiber erlauben will, an den Größen der Werbefläche zu schrauben.
 
Das dachte ich mir fast schon, nachdem ich diese Masse von Callback Aufrufen gesehen habe.

Für das Ursprungsproblem gibt es meines Erachtens keine JavaScript Lösung, außer der Hersteller stellt etwas bereit. Ich kann mir unabhängig davon auch nicht vorstellen, dass man
a) gemietete Werbeflächen frei lässt
b) dem Homepage Betreiber erlauben will, an den Größen der Werbefläche zu schrauben.

Die Größe des iframes zu ändern, wäre ja kein Problem und lässt sich vom Werbenden kaum verhindern:

Code:
iframe {
  height: 100px !important;
}

Nur macht es keinen Sinn, da es für gewöhnlich fixe Abmessungen gibt, die von allen Beteiligten eingehalten werden:
https://support.google.com/adsense/answer/6002621?hl=en
Und zum Thema responsive:
https://support.google.com/adsense/answer/3213689?hl=en
 
Die Größe des iframes zu ändern, wäre ja kein Problem und lässt sich vom Werbenden kaum verhindern:
Da habe ich mich blöd ausgedrückt. Ich meinte, normal wird man für Werbung bezahlt und da erwartet der Zahlende auch, dass er die gebuchte Werbefläche auch bekommt. Diese in der Größe dann zu beschneiden ist gegen den Vertrag, und nicht, dass es technisch nicht möglich sei. Daher haben wir ja auch die ganze Zeit auf dem Wörtchen dynamisch herum gehackt.
 
Zurück
Oben