【发布时间】:2011-03-20 17:33:40
【问题描述】:
有没有办法通过javascript检测主流浏览器(firefox,即chrome、safari和opera)中的flash插件崩溃?
【问题讨论】:
-
很好奇你试图通过检测来完成什么。
-
他可能想刷新页面?
标签: javascript flash browser crash
有没有办法通过javascript检测主流浏览器(firefox,即chrome、safari和opera)中的flash插件崩溃?
【问题讨论】:
标签: javascript flash browser crash
我不确定这是否有效。您可以定期获取对 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 代码中调用的接口函数。如果 flash 崩溃了,它的界面也应该崩溃。因此,这可能是一个解决方案。
【讨论】:
使用 ActionScript 中的全局异常处理来调用 UncaughtErrorEvent.UNCAUGHT_ERROR 的外部接口。
当 Flash Player 运行时发生错误时,它可能会捕获异常并向 JavaScript 发出信号。
【讨论】:
也许您可以在您的 as3 文件中使用与页面 js 对话的保持活动脚本,如果 js 在几秒钟内没有收到调用,您可以让它超时并将其作为闪存崩溃处理。
【讨论】:
这取决于您对误报的看法。
如果 Flash 似乎仍在工作,您可以让一个看门狗发出 ajax 调用“Flash 尚未崩溃”。并假设如果没有写入闪存已经崩溃。如果用户在检查之前关闭页面,这将产生误报。
如果 Flash 似乎无法正常工作,您可以让一个看门狗发出 ajax 调用“Flash 已崩溃”。这将错过崩溃,例如导致整个浏览器崩溃的崩溃。
也许您可以同时拥有两个看门狗,以便更好地了解正在发生的事情。
【讨论】: