答案 0 :(得分:9)
我不确定这是否有效。您可以定期获取对flash对象的引用,并检查它是否具有SetVariable方法。
function checkFlashCrashed() {
try {
var tmp = document.getElementById("flashObjectId").SetVariable;
if(!tmp) {
alert("Flash crashed");
return;
}
} catch (e) {
alert("Flash crashed");
return;
}
setTimeout(checkFlashCrashed, 1000); // check it out every one second
}
SetVariable是一个可以从Javascript代码调用的接口函数。如果闪存崩溃,它的界面也会崩溃。因此,这可能是一个解决方案。
答案 1 :(得分:2)
在ActionScript中使用全局异常处理来调用UncaughtErrorEvent.UNCAUGHT_ERROR上的外部接口。
当Flash Player运行时发生错误时,它可能会捕获异常并发出JavaScript信号。
答案 2 :(得分:0)
也许你可以在你的as3文件中使用一个与页面js对话的保持活动脚本,如果js没有几秒钟的调用,你可以让它超时并将其作为一个闪存崩溃处理。
答案 3 :(得分:0)
这取决于你对误报的看法。
如果闪光灯似乎仍在工作,你可以让一个看门狗进行ajax调用“闪光灯没有崩溃”。如果没有写,闪存已经崩溃了。如果用户在检查前关闭页面,这将产生误报。
如果闪光灯似乎不起作用,你可以让看门狗发出ajax调用“闪光灯已经崩溃”。这将错过崩溃,就像崩溃一样,用它来杀死整个浏览器。
也许你可以拥有两个看门狗,这样你就可以更好地了解最新情况。