2010-07-25 92 views
7

有没有什么办法通过javascript检测主要浏览器(firefox,即chrome,safari和opera)中的flash-plugin崩溃?检测FLASH插件崩溃

+0

好奇,你试图完成与检测。 – Codex73 2010-07-25 15:46:59

+0

他可能想刷新页面? – 2010-09-08 23:13:05

回答

0

也许你可以在你的as3文件中使用一个保持活动的脚本来与页面js进行对话,如果js没有接到几秒钟的呼叫,你可以让它超时并将其作为闪存崩溃来处理。

8

我不确定这是否有效。您可以定期获取对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代码调用的接口函数。如果闪存崩溃,它的接口也会崩溃。因此,这可能是一个解决方案。

+0

不起作用... – Nabab 2012-09-10 08:46:51

+0

+1。它像Chrome 23.0.12.71中的魅力一样。可悲的是,OP是一个新手/巨魔。 – 2012-11-19 23:38:17

+0

这似乎是一个有效和正确的答案,但OP仍然不在乎:)。 – Zafer 2017-11-27 14:06:24

1

在ActionScript中使用全局异常处理来调用UncaughtErrorEvent.UNCAUGHT_ERROR上的外部接口。

当Flash Player运行时发生错误时,它可能会捕获异常并发出JavaScript信号。

+1

是的,但是如果你没有访问你的播放器代码的情况呢?例如:youtube播放器在页面上崩溃,如何检测? – Skay 2011-07-19 09:02:46

0

这取决于您对误报的感受。

如果闪存似乎仍在工作,您可以有一个看门狗,它会发出“闪存没有崩溃”的ajax调用。并且假设如果没有写入,闪存已经崩溃。如果用户在检查前关闭了页面,则会产生误报。

如果闪光灯似乎不工作,您可以有一个看a狗打电话“闪光灯已经坠毁”的看门狗。这将会导致崩溃,比如崩溃,会导致整个浏览器崩溃。

也许你可以同时拥有两个看门狗,这样你可以更好地了解发生了什么事情。