всплывающие окна из встроенного кроссбраузерного .swf

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

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


person matt lohkamp    schedule 23.11.2008    source источник


Ответы (2)


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

person Ben Combee    schedule 24.11.2008
comment
Вау. Это смело. Я люблю это. Вам придется сделать несколько причудливых сценариев, чтобы убедиться, что div появляется в нужном месте в нужное время, но это звучит как хорошее решение. - person matt lohkamp; 24.11.2008

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

Он пытается использовать ExternalInterface для настройки функции window.open, и если это не удается (особенно в Safari), он снова обращается к flash и предлагает ему выполнить navigationToURL для нормального всплывающего окна (вместо хромированного)

person matt lohkamp    schedule 26.02.2010