Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   HTML/DHTML/CSS/JS/VB (http://www.flasher.ru/forum/forumdisplay.php?f=66)
-   -   GetVariable не работает под FireFox (http://www.flasher.ru/forum/showthread.php?t=119225)

Vodan 15.12.2008 16:36

GetVariable не работает под FireFox
 
Пишу расширение, которое должно взаимодействовать с флешками. Столкнулся с тем, что GetVariable всегда возвращает null. При этом SetVariable работает замечательно.
Попробавал читать переменные не из расширения, а просто из JS на страничке - теже грабли. Под IE все работает нормально, но мне-то нужен FF...

wvxvw 15.12.2008 19:32

Не должно работать ни там и ни там если речь идет о АС3. Смотрите справку по ExternalInterface.

Vodan 15.12.2008 19:45

Мне нужен доступ к произвольной флешке, содержимое которой я менять не могу, поэтому ExternalInterface - мимо меня.

7thsky™ 16.12.2008 01:10

А код можно посмотреть? так у меня все работает как часы.

Vodan 16.12.2008 01:22

в расширении:
Код:

var swf = gBrowser.selectedBrowser.contentDocument.getElementById('swf').wrappedJSObject;
var val = swf.GetVariable("_root");

Просто JS:
Код:

<img src="smile.gif" width="41" height="32" onclick="alert(document.getElementById('swf').GetVariable("_root"))" />
FF 3.0.4
Flash 10.0.12.36

swf - точно флешовый объект, ибо SetVariable работает без проблем, а в IE и GetVariable работает.

etc 16.12.2008 13:28

_root нет в AS3.

Vodan 16.12.2008 17:56

Под IE код работает, во программе, которая использует флешку - работает, ибо там используется IE в качестве контейнера. А под FireFox не работает.

wvxvw 16.12.2008 23:18

Вопрос в другом, как вы собирались до переменной добираться в АС3? Где вы ее в АС3 так сможете объявить, чтобы GetVariable смог ее увидеть?

Vodan 17.12.2008 00:01

Я так поковырялся и у себя и по интернетам, в общем вопрос возможно не к AS как таковомму, сколько к флешовому объекту, так как не работает получение переменных и во флешках с AS2. На сайте адоба есть пара древних тем с такой же проблемой (GetVariable возвращает null под FireFox), но к сожаленю без ответа...
http://www.adobe.com/cfusion/webforu...d1=GetVariable

Vodan 17.12.2008 00:43

Вложений: 1
Код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <title>SWFObject dynamic embed - step 3</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="swfobject.js"></script>

    <script type="text/javascript">
    swfobject.embedSWF("swf.swf", "swf-container", "550", "400", "9.0.0");
    </script>

  </head>
  <body>
    <div id="swf-container">
      <p>Alternative content</p>
    </div>
    <br/>
    <a href="#" onclick="alert(getElementById('swf-container').GetVariable('_root.txt.text'))">GetVariable</a>
    <br/>
    <a href="#" onclick="getElementById('swf-container').SetVariable('_root.txt.text', 'что-то')">SetVariable</a>
  </body>
</html>

под IE работает, под FF, Opera, Chrome - нет.
Флешка простейшая - на ней текстовое поле, содержимое которого собираюсь менять/читать.

p.s. Возможно эту тем надо перенсти в другую ветку.. например в HTML/DHTML/CSS/JS/VB

wvxvw 17.12.2008 00:49

Есть еще такой вариант: SWFObject не поддерживает этот метод. Вы используете SWFObject 2, может стоит попробовать первую версию? Или просто ембед? Все таки вторая версия кроме того, что немного бажная в других отношениях рассчитана больше на АС3...

Ну и естесственно, поставить FireBug в ФФ. Почемуто мне кажется, что ошибка именно в SWFObjecte...

Vodan 17.12.2008 01:12

SWFObject тут не причем, я пробовал и стандартную обертку адоба - тот же результат. Firebug у меня стоит (кудаж без него). Флешовый объект берется правильно, ведь SetVariable работает, а вот GetVariable - нет/

etc 17.12.2008 13:09

Откуда вы знаете, что SetVariable работает?

В любом случае, работа с SetVariable/GetVariable с AS3-роликами вам не светит. Ответ вам уже дали: ExternalInterface.

Vodan 17.12.2008 13:31

__etc вы бы пример посмотрели сначала, а потом уже спрашивали "Откуда вы знаете, что SetVariable работает?"

Chas 17.12.2008 14:07

у вас fla компилируется под AS2. А вам нужно и As2 и As3, как я понял. SetVariable/GetVariable c AS3 не работает, дальнейшее разбирательство, почему в одном броузере работает, а в другом нет бесмысленно. Идите в направлении ExternalInterface и решайте уже его глюки.

etc 17.12.2008 14:28

Цитата:

Сообщение от Vodan (Сообщение 784374)
__etc вы бы пример посмотрели сначала, а потом уже спрашивали "Откуда вы знаете, что SetVariable работает?"

Я посмотрел пример, ролик там AS2, а не AS3.

Vodan 17.12.2008 14:37

__etc
Как я уже говорил ранее, скорее всего вопрос задан не там и топик надо перенести в обсуждение HTML/DHTML/CSS/JS/VB, так как проблема не в версии AS, а во взаимодействии между FF и flash.

etc 17.12.2008 14:46

В Safari тоже не работает, кстати.
Так и быть, переезжаем, но я бы не рекомендовал вам продолжать разбираться с древним API флешевого плагина, а использовать нормальный EI.

KidsKilla 17.12.2008 15:37

вместо GetVariable проще заюзать воркэраунд:

javascript:
Код:

var myVar = null;
Flash:
Код AS1/AS2:

_root.getURL('javascript:myVar = "value";');

В нужном месте просто обращаемся к myVar...

Vodan 17.12.2008 15:42

Нет возможности менять флешку. Интерфейс работы с ней есть, через GetVariable/SetVariable.
Если бы мог менять флешку - сделал бы через EI и не морочил себе и другим голову...

KidsKilla 18.12.2008 00:18

Цитата:

Сообщение от Vodan (Сообщение 784426)
Нет возможности менять флешку. Интерфейс работы с ней есть, через GetVariable/SetVariable.
Если бы мог менять флешку - сделал бы через EI и не морочил себе и другим голову...

дык косяки, вероятно в ней... можно сделать флеш-обёртку...

Vodan 18.12.2008 00:30

KidsKilla, простите, вы тему читали, приложеный файлик смотрели? Сказано же было, и не раз, что под IE все работает, под осталные браузеры работает только SetVariable, причем для любой флешки.

KidsKilla 18.12.2008 14:22

Вместо выпячивания гонора (кстати, устное предупреждение за хамство) стоило лучше поискать:
http://kb.adobe.com/selfservice/view...nalId=tn_14159

FF 2 для примера
Цитата:

Windows XP YES YES YES : Not functioning: GetVariable, TCallFrame, TCallLabel YES
повторяю: единственный вариант -- флеш обёртка.

Vodan 18.12.2008 16:32

Во-первых не вижу где вы нашли хамство, а во вторых там и для IE написано тоже самое, и не смотря на это, в IE GetVariable замечательно работает.

KidsKilla 18.12.2008 23:20

Цитата:

Сообщение от Vodan (Сообщение 784707)
Во-первых не вижу где вы нашли хамство, а во вторых там и для IE написано тоже самое, и не смотря на это, в IE GetVariable замечательно работает.

Я не знаю где вы нашли это "замечательно работает". У меня ругается.
Во всяком случае этот GetVariable писан для 2й-5й версии флеша. Работоспособность его никто не гарантирует и разбираться в этом считаю пустой тратой времени.

Vodan 19.12.2008 00:18

KidsKilla
IE какой? Под 6-м замечательно работает.
Для меня, к сожаленю, это единственный вариант...

KidsKilla 19.12.2008 14:18

6й. единственный нерабочий вариант.
чем не устраивает вариант с оберткой то? в ней можно реализовать нормальный интерфейс работы с жс, а коммуникации флеш-флеш банальны.

Chas 19.12.2008 15:25

KidsKilla: под оберткой ты имеешь ввиду, что делается флешка, которую учат общаться с JS, а она, в свою очередь, загружает уже в себя флешку-контент и передает ей сообщения от JS? А в таком варианте не будет проблемой настроить связь с AS2 флешкой, если нет возможности её переделать?

KidsKilla 19.12.2008 16:54

дык и обёртка в ас2...


Часовой пояс GMT +4, время: 15:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.