Trả lời câu hỏi của riêng tôi: https://sourceforge.net/forum/message.php?msg_id=5929756
- Định nghĩa một hàm Javascript mà nên được gọi nếu Flash nạp.
- Gọi phương thức này từ đầu tệp Flash của bạn.
- Sử dụng bộ hẹn giờ để phát hiện xem cuộc gọi lại có bao giờ được gọi hay không.
- Ưu tiên gọi hàm Javascript từ Flash thay vì gọi các hàm Flash từ Javascript. Dù bằng cách nào bạn cũng không thể gọi một hàm chưa được tải. Nó dễ dàng hơn nhiều để đảm bảo rằng trình duyệt đã tải xong chức năng Javascript của bạn trước khi gọi nó từ Flash, hơn là đảm bảo rằng Flash đã tải xong chức năng Flash của bạn trước khi gọi nó từ Javascript.
Dưới đây là một ví dụ:
- Tôi đang sử dụng swfobject để nhúng Flash.
- Tôi sử dụng FlashVars để cho Flash biết chức năng Javascript cần gọi. Điều này rất hữu ích nếu có nhiều đối tượng Flash trên trang.
flash
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);
}
rực rỡ! Điều này sẽ giúp ích rất nhiều cho ngày hôm nay: D –