PDA

Просмотр полной версии : Как открыть окно браузера фиксированного размера?


TTA
12.01.2012, 11:25
Салют! интересен собстно сабж. Надо кнопкой во флешке открыть окно браузера с нужной страницей скажем 300х300 пикселей и желательно поверх самой флешки (чтото вроде popup). Есть идеи как победить?

mooncar
12.01.2012, 13:05
Так, или иначе, начать надо с выбора подходящего решения на JavaScript.

1. Можно открыть именно pop-up окно, вызвав из флешки javascript-функцию.
Вызвать js из флешки можно парой способов, я использую ExternalInterface.call('имя_функции');
Сперва напишите js-функцию для открытия pop-up (через window.open (http://javascript.ru/window-open)).
<script type="text/javascript" language="javascript">
function showPopUp()
{
window.open("http://ya.ru","Yandex", "width=300, height=300, resizable=no, scrollbars=no, status=yes");
}
</script>
import flash.external.*;

btn.onRelease = function()
{
ExternalInterface.call('showPopUp');
}


2. Есть второй способ, более элегантный. Положите поверх флешки невидимый фрейм (например, iframe c visibility:hidden), и показывайте его также с помощью вызова js-функции.
На странице:
<script type="text/javascript" language="javascript">
function showFrame()
{
var node = document.getElementById("someIframe");
node.style.visibility = "visible";
}
</script>
Флешка:
import flash.external.*;

btn.onRelease = function()
{
ExternalInterface.call('showFrame');
}

Откроется не окно, а будет показан некий блок на той же странице. Иногда это бывает уместнее. Но на любителя.


Код не проверял. Примеры по использованию ExternalInterface см. в хелпе. Проверять на хостинге, иначе ExternalInterface не запашет. Либо подокорректировать разрешенные зоны, добавив локальные диски (http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html#119065) - поставить "Всегда разрешать и добавить локальный диск.
При публикации флешки на странице - разрешить ей использование скриптов.

Вместо метода ExternalInterface.call можно использовать getURL, также вызывать JS. Но лично мне это менее нравится.