2008-11-23 6 views
3

Ситуация: у вас есть .swf, встроенный в html-страницу, и когда вы нажимаете на что-то в .swf, ему нужно всплывать без хромированного окна. Обычно это было бы довольно просто - но рассмотрим Safari, который полностью отключает все функции window.open, пока включен его всплывающий блок-блок (он делает исключение, если функция запускается onclick, но не учитывает клики во флэш-памяти) , Как вы можете создать что-то, что изящно ухудшает (обеспечивает альтернативный и примерно эквивалентный опыт) для браузеров, которые не будут выполнять window.open?всплывающие окна из встроенного .swf кросс-браузера

(примечание:. Это AS3, и Safari 3 для PC или Mac мы говорим, - но в более широком смысле, любой браузер, который не поддерживает или отказывается разрешить JavaScript window.open функцию)

ответ

1

Если ваш SWF загружен с использованием wmode='opaque' или wmode='transparent', тогда у вас может быть код JavaScript для вывода SWF, который создаст пустой <div>, расположенный над областью SWF. То, что <div> может обрабатывать событие onclick и создавать всплывающее окно, а не код Flash.

+0

Whoa. Это грустно. Мне нравится это. Вам нужно будет сделать некоторые причудливые сценарии, чтобы убедиться, что div появился в нужном месте в нужное время, но это похоже на хорошее решение. – 2008-11-24 13:18:33

0

Оверлей div был более сложным, чем заслужил проект - зарегистрируйтесь code.google.com/p/popupfromflash для кода, который я придумал.

Он пытается использовать ExternalInterface для установки функции window.open, и если это не сработает (особенно в Safari), он перезвонит во флэш и предложит ему открыть навигаторToURL, чтобы нормально открывать окно (вместо хромированного)