检测 FLASH 插件崩溃
Posted
技术标签:
【中文标题】检测 FLASH 插件崩溃【英文标题】:Detect FLASH plugin crashes 【发布时间】:2011-03-20 17:33:40 【问题描述】:有没有办法通过javascript检测主流浏览器(firefox,即chrome、safari和opera)中的flash插件崩溃?
【问题讨论】:
很好奇你试图通过检测来完成什么。 他可能想刷新页面? 【参考方案1】:我不确定这是否有效。您可以定期获取对 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 崩溃了,它的界面也应该崩溃。因此,这可能是一个解决方案。
【讨论】:
+1。它就像 Chrome 23.0.12.71 的魅力一样。可悲的是,OP 是一个新手/巨魔。 这似乎是一个有效且正确的答案,但 OP 仍然不在乎 :)。 没测试过,flash死了=D 你在 2010 年问过这个问题。你本可以测试它并接受这个作为答案。 :)【参考方案2】:使用 ActionScript 中的全局异常处理来调用 UncaughtErrorEvent.UNCAUGHT_ERROR 的外部接口。
当 Flash Player 运行时发生错误时,它可能会捕获异常并向 JavaScript 发出信号。
【讨论】:
是的,但是如果您无法访问播放器的代码怎么办?例如:youtube播放器在页面崩溃,如何检测?【参考方案3】:也许您可以在您的 as3 文件中使用与页面 js 对话的保持活动脚本,如果 js 在几秒钟内没有收到调用,您可以让它超时并将其作为闪存崩溃处理。
【讨论】:
【参考方案4】:这取决于您对误报的看法。
如果 Flash 似乎仍在工作,您可以让一个看门狗发出 ajax 调用“Flash 尚未崩溃”。并假设如果没有写入闪存已经崩溃。如果用户在检查之前关闭页面,这将产生误报。
如果 Flash 似乎无法正常工作,您可以让一个看门狗发出 ajax 调用“Flash 已崩溃”。这将错过崩溃,例如导致整个浏览器崩溃的崩溃。
也许您可以同时拥有两个看门狗,以便更好地了解正在发生的事情。
【讨论】:
以上是关于检测 FLASH 插件崩溃的主要内容,如果未能解决你的问题,请参考以下文章