我的產品打開網頁瀏覽器並將其指向包含本地Flash應用程序的HTML文件。如何以編程方式檢測此文件是否成功加載,以及是否拋出異常?有沒有辦法使用Javascript來做到這一點?檢測Flash應用程序是否使用Javascript正確加載?
從外部檢查文件是否存在於磁盤上是不夠的,因爲我看到其他故障發生(可能涉及競爭條件)。
我的產品打開網頁瀏覽器並將其指向包含本地Flash應用程序的HTML文件。如何以編程方式檢測此文件是否成功加載,以及是否拋出異常?有沒有辦法使用Javascript來做到這一點?檢測Flash應用程序是否使用Javascript正確加載?
從外部檢查文件是否存在於磁盤上是不夠的,因爲我看到其他故障發生(可能涉及競爭條件)。
回答我的問題:https://sourceforge.net/forum/message.php?msg_id=5929756
下面是一個例子:
閃存
var params:Object = LoaderInfo(this.root.loaderInfo).parameters;
if (ExternalInterface.available)
{
var onLoaded:String = params["onLoaded"];
if (onLoaded != null)
ExternalInterface.call(onLoaded, true);
}
的Javascript
var flashLoaded = false;
var flashTimer;
function onFlashLoaded()
{
flashLoaded = true;
clearTimeout(flashTimer);
}
function onFlashTimeout()
{
if (!isFlashLoaded)
{
// Remove the Flash object in case it is partially loaded
$("#videoFeed").empty();
$("#videoFeed").append('<div id="flashObject"></div>');
alert("Failed to load video player");
}
clearTimeout(flashTimer);
}
function connectToVideo()
{
var flashvars = {};
flashvars.onLoaded = "onFlashLoaded";
var params = {};
params.menu = false;
var attributes = {};
isFlashLoaded = false;
flashTimer = setTimeout("onFlashTimeout()", 5000);
swfobject.embedSWF("flash/VideoFeed.swf", "flashObject", "800", "600", "11", "expressInstall.swf", flashvars, params, attributes);
}
Acording到Adobe ExternalInterface的文件:如果啓用了彈出窗口攔截器 http://livedocs.adobe.com/flex/3/langref/flash/external/ExternalInterface.html 某些Web瀏覽器限制調用文檔類的構造函數通過ExternalInterface的JavaScript函數。
是否有任何其他解決方案來檢測SWF電影已成功加載?
在無法修改swf並添加ExternalInterface的情況下,您仍然可以使用Javascript來獲取swf的狀態。例如,您可以從Javascript調用document.getElementById(swf_id).PercentLoaded(),並等待它爲100。
這不會告訴你什麼異常是如果swf加載失敗,但至少你會知道它是否加載。其他有用的電話在這裏找到: http://www.adobe.com/support/flash/publishexport/scriptingwithflash/scriptingwithflash_03.html
輝煌!這對今天會有很大的幫助:D – 2009-12-23 22:42:23