Javascript теряет связь со вспышкой при перемещении в дом - PullRequest
2 голосов
/ 02 сентября 2010

Код внутри Actionscript:

var methodName4:String = "startupload";
var instance4:Object = null;
var method4:Function = startupload;
var wasSuccessful4:Boolean = ExternalInterface.addCallback(methodName4, instance4, method4);
function startupload(currently_uploading_id) {

    /* If there is still more photos to upload, then proceed to next one */
    if((max_photo_number - session_photos))
    {
        uploadthis(selected_photos,currently_uploading_id);
    }
}

Html:

<div id="e_upload" class="hidden">
    <div id="upload_container">

    </div>
</div>

Javascript: когда дом загружен:

var cached_flash = $('#e_upload').html();
$('#e_upload').html('');

When generating html via javascript:
$(cached_flash).appendTo(full_ad.find('#e_upload_wrapper')).show();

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

Вызов ActionScript таким образом:

/* Sending back to Flash */
function thisMovie(movieName) {

    if (window.document[movieName]) {
        return window.document[movieName];
    }
    if (navigator.appName.indexOf("Microsoft Internet") == -1) {
        if (document.embeds && document.embeds[movieName])
            return document.embeds[movieName];
    }
    else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
    {
        return document.getElementById(movieName);
    }

}

thisMovie('fileref').startupload(currently_uploading_array_slot);

Actionscript просто вызывает функции javascript изнутри, но javascript - нет.

В чем проблема? Как перепривязать функцию автозагрузки?

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

У вас та же проблема с этим.

Можно ли переместить объект Flash в DOM без его перезагрузки?

Когда вы перемещаете флэш-память, это CSS-поле разрушается и воссоздается. По разным причинам (подробнее см. Ссылку) состояние плагина хранится в поле CSS, а не в объекте DOM, поэтому плагин «сбрасывается». Это означает, что переменная объекта, которую вы используете для связи с плагином, больше не содержит действительной ссылки, поскольку плагин был перезагружен.

0 голосов
/ 03 сентября 2010

у вас есть доступ к телу документа, но ваш SWF-файл глубже, так что обращайтесь к нему напрямую:

так что не document.getElementById(movieName), а document.getElementById(e_upload).getElementById(movieName)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...