2009-11-20 2 views
1

Я использую этот код, чтобы открыть всплывающееОткрытие всплывающих окон из AS3, используя ExternalInterface в Safari

ExternalInterface.call("function() { window.open('" + url + "','" + title + "','" + options + "'); }"); 

для JavaScript людей: вызов ExternalInterface.call(string); из флэш-плеера позволяет браузеру делать eval(string)();

как это вызов находится в обработчике кликов, он отлично работает с Firefox и IE, для Opera он позволяет открывать всплывающее окно вручную. Но в Сафари он всегда блокирован бесшумно. У кого-нибудь есть идея, как обойти это?

благодарит

back2dos

ответ

2

я столкнулся в этом, и, насколько я мог сказать, что не было никакого реального решения ... только обходной путь я мог бы найти по существу проверки, если Window.open работ , и если он не использует navigateToURL вместо этого ... Я только что нашел эту ссылку, которая объясняет это намного лучше: http://www.asserttrue.com/articles/2007/08/22/workaround-for-safari-blocking-flash-initiated-pop-ups

+0

из ссылки, это выглядит весьма полезно: http://www.asserttrue.com/articles/2009/04/29/navigatetowindow-project-added-to-github – Cay

+0

спасибо за ссылку. он делает довольно много, что я делаю, но это красиво завернуто ... :) – back2dos

+0

нормально, ничего, похоже, действительно не работает ... но это решение, по крайней мере, имеет приятную интегрированную защиту, так что я думаю, это лучший ответ i может получить ... :) – back2dos

1

Вам не следует создавать свою функцию внутри AS3. Вероятно, это одна из причин, по которой вы плохо себя чувствуете.

Вы должны создать свою функцию в файлах HTML или JS и вызвать ее с помощью EI и передать необходимые вам аргументы.

+0

Как вы думаете, это решает проблему? javascript определенно выполнен. я попробую, но я очень скептически – back2dos

+0

Даже если это не решит проблему, это хорошая привычка. Но да, я думаю, что это правдоподобно, что проблема. –