【问题标题】:Detect FLASH plugin crashes检测 FLASH 插件崩溃
【发布时间】:2011-03-20 17:33:40
【问题描述】:

有没有办法通过javascript检测主流浏览器(firefox,即chrome、safari和opera)中的flash插件崩溃?

【问题讨论】:

  • 很好奇你试图通过检测来完成什么。
  • 他可能想刷新页面?

标签: javascript flash browser crash


【解决方案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 已崩溃”。这将错过崩溃,例如导致整个浏览器崩溃的崩溃。

    也许您可以同时拥有两个看门狗,以便更好地了解正在发生的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 2016-05-20
      • 2019-01-21
      • 2013-10-18
      相关资源
      最近更新 更多