PDA

Просмотр полной версии : GetVariable под Opera 5.12?


Alexey Venediktov
30.04.2004, 12:54
Господа, не подскажете:

под ie, nn 6.2, nn 4.76 работает, а под opera 5.12 нет.
В чем трабла?

JavaScript:
...
function TreeView_DoGetValue(movieVariableName) {
var TreeViewObj = isInternetExplorer ? document.all.TreeView : document.TreeView;
alert( TreeViewObj );
var value = TreeViewObj.GetVariable(movieVariableName);
alert( value );
return value;
}
...
Вставка клипа:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="swflash.cab#version=7,0,0,0"
id="TreeView" width="100%" height="80%" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="TreeView.swf" />
<param name="loop" value="false" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="scale" value="exactFit" />
<param name="bgcolor" value="#ffffff" />
<embed src="TreeView.swf" loop="false" menu="false" quality="high" scale="exactfit"
bgcolor="#ffffff" width="100%" height="80%"
swLiveConnect=true name="TreeView" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>

<form><input type="button" onclick="TreeView_DoGetValue('selectedNodesID');" value="test"></form>

Так вот при вызове TreeView_DoGetValue из-под Oper'ы первый alert пишет [object HTMLEmbedElement] , а до второго alert'а дело не доходит - молча выходит из процедурки после (во время?) GetVariable.

Что за проблема? Как лечить? Opera нужна уж больно :(


ЗЫ: Разумеется сам клип загружается и работает хорошо :)
"selectedNodesID" - непустая строка циферок

Alexey Venediktov
30.04.2004, 13:17
Дополнение:
под Opera 7.23 - работает частично - если описать клип по иному:

<object id="TreeView" type="application/x-shockwave-flash"
data="TreeView.swf"
width="100%" height="80%" scale="exactfit" bgcolor="#ffffff" swLiveConnect="true"
codebase="swflash.cab#version=7,0,0,0"
>
<param name="movie" value="TreeView.swf?multiselect=true&fittoscreen=true&datasource=nodes.xml"/>
<param name="allowScriptAccess" value="sameDomain" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="scale" value="exactFit" />
<param name="bgcolor" value="#ffffff" />
</object>

Dimanelly
30.04.2004, 13:20
Знаешь, я не сильно понял что у тебя за скрипт, но пишу по поводу самого заголовка вопроса про Оперу.
У меня была такая проблемма, не работал запрос loadVariables к php-файлу на серваке под Оперой.
Писал урл прямо в браузере типа http://сайт.ru/file.php&m1=22&m2=333
Сам браузер и пхп-файл отвечал всё чётко, т.е. возвращал правильный результат запроса, НО во флешку этот результат упорно не проходил.
Начал просить в аське всех проверять на своих операх.
Так вот что меня удивило: данная бодяга не работала только в версии 7.11 (могу наврать, точно не помню), у тех кто был на 7.03 всё отлично пахало.
Плюнул на всё, так как парился с этим багом не один день, поставил себе 7.03 и забыл про эту проблемму.
Так что может быть дело именно в глюке самой Оперы, т.к. loadVariables и GetVariable чем то похожи.
Удачи.

TTS
30.04.2004, 16:18
Оригинал написал(а) Alexey Venediktov
Господа, не подскажете:

под ie, nn 6.2, nn 4.76 работает, а под opera 5.12 нет.
Там еще много чего не работает.

Dindin
30.04.2004, 22:17
Итак. Приехали.
Экскурс в историю. Когда-то (еще в прошлом веке) компания МелкоМягкий придумала систему управления интерактивным содержимым activeX, которая была (да и по сей день остается) одной большой дырой в безопасности. И подумали лобастые ребята из микрософта - а как бы нам этот самый активикс присобачить к интернету? и придумали тэг <object>. А другие производители браузеров сказали - не нужен нам ваш дурацкий активикс, не станем мы включать тэг <oblect> в таблицы обработки HTML. И с тех пор <object> нормально не поддерживают:
1) все версии нетскейпа
2) все версии мазилы (в том числе файрбёрд и файрфокс)
3) все версии оперы
И так далее. Ну то есть не то что бы совсем не поддерживают, но не поддерживают нормально. В большинстве случаев - просто игнорируют. Зато они превосходно поддерживают тэг <embed>, который, в свою очередь не любит эксплорер.
Так что для того, что бы флэш нормально использовался всеми браузерами нужно внедрять его при помощи двух тэгов, <object> и <embed>
RTFM (http://www.flash-ripper.com/articles/flash/1997_06_19_object_embed_tag_attribs.htm)
Простите, чей-то я вопрос неправильно прочел. Но ссылочка хорошая -поглядите.

Nox Noctis
01.05.2004, 00:34
Dindin, хорощий экскурс, только поясни что ты имел в виду под "системой управления интерактивным содержимым activeX, которая была (да и по сей день остается) одной большой дырой в безопасности"

прецеденты ? :)

я правда не знаю ниче об этом.

Dindin
01.05.2004, 15:27
Яндекс выдает такое - http://www.yandex.ru/yandsearch?text=%F1%EF%E8%F1%EE%EA+%E4%FB%F0+%E2+activeX&stype=www&rpt=rad

Alexey Venediktov
05.05.2004, 18:50
Спасибо за разъяснение, но у меня <EMBED> есть - и в коде его видно, да и написал я что клип загружается и работает ...

НО...

GetVariable(...) не работает на Oper'ах до версии 7.xx - говорит:

Error:
name: TypeError
message: Attempted to call non-function: has undefined value: 'GetVariable'

Не присоветуете-ли чего?

TTS
06.05.2004, 13:44
Ответ тут только один - идти обходными путями.
Например, объявить в JS переменную и из самого флеша при каждом изменении movieVariable через getURL("javascript:... менять ее значение.

PS Если я не ошибаюсь, getVariable, а не GetVariable.