检测 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 插件崩溃的主要内容,如果未能解决你的问题,请参考以下文章

解决firefox经常出现Adobe Flash 插件已崩溃

谷歌浏览器 Chrome 遇到Flash崩溃的处理办法

火狐浏览器打开带flash的页面浏览器假死,崩溃

ubuntu火狐浏览器崩溃

Debian8.3安装flash插件,备用~~~

Java应用程序中的SQLite崩溃(在线游戏)