2009-03-30 8 views
1

Ich lade Flash-Ad-Banner in meine All-Flash-Site mit Loader. Ich habe keine Kontrolle über den Code in den Bannern, da sie von Werbetreibenden stammen.Gibt es eine Möglichkeit, externe SWF in eine Sandbox im Flash zu laden?

Ich möchte sie laden, damit sie die Mausereignisse auf der Website außerhalb ihres begrenzten Bereichs nicht durcheinander bringen können. Sloppy-Code auf Werbetreibenden-Banner sollte die Funktionalität meiner Website in keiner Situation zerstören.

Bonus Frage, wie kann ich die Probleme lösen, die durch die Banner verursacht werden, die eine andere Bildrate als meine Hauptseite sind? (Oder gibt es eine einfache Möglichkeit, die aktuell gezeichneten Animationen in meine Bildrate zu konvertieren, während die Animationsgeschwindigkeit unverändert bleibt?)

Es muss Leute geben, die sich mit diesen Problemen beschäftigt haben.

Was ist der beste Weg, dies zu tun?

Danke!

Antwort

1

Wenn Sie das externe swf laden, stellen Sie sicher, dass es in eine separate Sicherheitsdomäne und in eine untergeordnete Anwendungsdomäne geladen wird. Auf diese Weise kann nicht auf Maus- und Tastaturereignisse der Stufe (und bestimmte andere) zugegriffen werden, und es werden keine Klassendefinitionskonflikte auftreten.

Schauen Sie sich dieses Dokument: Developing and loading subapplications

+0

Wie ich es verstehe, möchten Sie, dass es in einer gleichrangigen Anwendungsdomäne geladen wird (loadForCompatibility = true), keine Kind-App-Domäne, um die von Ihnen erwähnten Klassenkonflikte zu vermeiden. – eglasius

1

Theoretisch hat das geladene swf keinen Zugriff auf die Objekte und Variablen des übergeordneten Elements ohne Erlaubnis. You can read more about Security.allowDomain here. Sofern Sie nicht die Domäne allowDomain() in der Domain des Banners verwenden, können Objekte auf Ihrer Website nicht aufgerufen werden.

Sie auch was man tun könnte oder mehrere der folgenden Optionen:

  • erstellen eine Maske für das Loader-Objekt des Banners, um die Banner zu verhindern, dass mehr erweitert, als es Platz zugewiesen wird

  • verwenden, um die mouseChildren Eigenschaft, um alle Mausereignisse des Loader.content Objekt zu deaktivieren und dann einen einzigen Klick-Ereignis auf dem Loader, für die Navigation auf der Zielseite banner hinzufügen

Ich habe mit der Bildrate selbst gespielt, aber ohne Erfolg. Das Kind scheint in allen Fällen der Bildrate der Eltern zu folgen. Die einzige Sache, die funktionierte, war, die automatische Bildratenrate für das Kind zu stoppen und dies über ein TimerEvent zu tun, was jedoch zusätzliche Prozessorlast erzeugt.

Verwandte Themen