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: 当dom加载时:
var cached_flash = $('#e_upload').html();
$('#e_upload').html('');
When generating html via javascript:
$(cached_flash).appendTo(full_ad.find('#e_upload_wrapper')).show();
就是这样。当我试图上传某些内容时,flash内的启动加载功能不再起作用了。
以这种方式调用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不是。
有什么问题?如何重新启动startupload函数?
答案 0 :(得分:1)
你遇到同样的问题。
Can I move a Flash object within the DOM without it reloading?
当你移动flash时,它的CSS框被破坏并重新创建。由于各种原因(请参阅更多链接),插件状态存储在CSS框中,而不是存储在DOM对象中,因此插件被“重置”。这意味着用于与插件通信的对象变量不再包含有效引用,因为插件已重新加载。
答案 1 :(得分:0)
您访问文档正文,但您的swf更深,因此请直接访问它:
所以不是document.getElementById(movieName)
而是document.getElementById(e_upload).getElementById(movieName)