Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при вызове callBack'a со страницы, Error calling method on NPObject! 
:(
    Опции темы
Onis
  Дата 7.7.2011, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 18.6.2005
Где: Украина, Николаев

Репутация: нет
Всего: 3



Привет винград, 
Никогда раньше не работал с as3, сегодня понадобилось написать скрипт который позволил бы пользователю выбрать файлы, а затем передал бы JS файлу имена этих файлов с их содержимое в Base64.

Помучившись пару часов выдавил из себя

Код

package{
    import flash.net.FileReferenceList;
    import flash.net.FileReference;
    import flash.events.*;
    import flash.external.ExternalInterface;
    import flash.system.Security;
    public class FileToBase64{
        public var fileRef:FileReferenceList = new FileReferenceList();        
        
        public function FileToBase64():void{
            Security.allowDomain('mydomain.com');
            fileRef.addEventListener(Event.SELECT, fileSelectHandler);
            ExternalInterface.addCallback('browseFiles', browse);
        }
        
        public function browse():void{
            fileRef.browse();
        }

        public function fileSelectHandler(evn:Event):void{
            for each(var selectedFile:FileReference in fileRef.fileList){
                selectedFile.addEventListener(Event.COMPLETE, onReadyHandler);
                try{
                    selectedFile.load();
                } catch (e:Error) {
                    trace("Cannot load file!");    
                }
            }
        }
        public function onReadyHandler(evn:Event){
            //trace(evn.target);
            var file = evn.target;
            ExternalInterface.call('selectedFilesHandler("'+Base64.encode(file.data)+'")');
            /*trace(file);
            trace(Base64.encode(file.data));*/
        }
    }
}

И тестовую страничку:
Код

<!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 2 static publishing example page</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <script type="text/javascript" src="swfobject.js"></script>
        <script type="text/javascript">
            var FileToBase64Obj = null;
            var path = 'http://mydomain.com';
            window.onload = function(){
                swfobject.embedSWF(path + 'FileToBase64.swf', 'test', '1', '1', '9.0.0', path + 'expressInstall.swf', null, 
                {'allowScriptAccess':'sameDomain', 'allownetworking':'yes', 'play':'true', 'movie':'FileToBase64.swf'}, {'id':'FileToBase64'}, flashLoaded);
            };
            function flashLoaded(e){
                if(e.success){
                    FileToBase64Obj = e.ref;
                    browse();
                }
            }
            function browse(){
                if(typeof(FileToBase64Obj.browseFiles) == 'function'){
                    console.log('ok')
                    FileToBase64Obj.browseFiles();
                }else{
                    console.log('fail')
                    window.setTimeout(arguments.callee, 32);
                }
            }
        </script>
    </head>
    <body>
        <div id="test">    
            
        </div>
    </body>
</html>

В итоге вижу в консоли бровзера:

Код

fail
fail
fail
fail
ok
Error calling method on NPObject!
FileToBase64Obj.browseFiles();

Естественно все файлы на одном домене.
Гугл так и не дал внятного ответа, прошу помощи у вас.

Это сообщение отредактировал(а) Onis - 8.7.2011, 13:08
PM MAIL   Вверх
Onis
Дата 8.7.2011, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 18.6.2005
Где: Украина, Николаев

Репутация: нет
Всего: 3



Почитал апдейты секюрности для 10й версии Flash Player, там запретили вызов .browse() и .download() через калбэки, только по средству внутренних событий. Отлично, может кто-то подскажет как называется объект всего флеш мувика? Я повешу на него onclick, сделаю прозрачным и помещу над кнопкой.
PM MAIL   Вверх
VingradFan
Дата 8.7.2011, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

Репутация: 1
Всего: 3



Onis, м.б. "stage"?


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
Onis
Дата 8.7.2011, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 18.6.2005
Где: Украина, Николаев

Репутация: нет
Всего: 3



VingradFan
Уже нашел, то что мне нужно, было это parent и 'wmode':'transparent'. Всем спасибо за внимание smile
PM MAIL   Вверх
VingradFan
Дата 8.7.2011, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

Репутация: 1
Всего: 3



Я не особо секу, а наши гуру что-то не появлялись пока smile


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
Onis
Дата 8.7.2011, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 18.6.2005
Где: Украина, Николаев

Репутация: нет
Всего: 3



Есть еще вопрос  smile как можно получить данные тегов параметров объекта в коде AS3? В документации не нашел нужной инфы. Но находил подобные примеры в гугле, которые у меня вообще не работают:
Код

var paramObj:Object = LoaderInfo(root.loaderInfo).parameters;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 3 | Следующая тема »


 




[ Время генерации скрипта: 0.0826 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.