如何检测Flash插件是否已暂时停用,或者相反,如果检测到Chrome浏览器的“点击播放”功能已启用?
Chrome的新“点击播放”功能会检测不明显的插件并暂停它们。 Chrome在插件上显示“播放”按钮,用户可以点击“播放”按钮激活插件。 (参考:https://productforums.google.com/forum/#!topic/chrome/xPcpRBzyPcc)
您可以在此屏幕截图中看到它已暂停视频播放器(右列)。该视频播放器具有基于HTML5的控件,覆盖基于Flash的视频播放器。因此,用户无法单击播放按钮,因为基于HTML5的播放/暂停控件有目的地涵盖整个SWF。
我需要的是检测SWF何时被“点击播放”功能暂停,以便我可以禁用控件并使SWF交互。
ExternalInterface
公开的所有方法仍然可用。它实际上响应它正在播放并且不会返回错误。 <object>
的大小更新为&gt; 700x400px。 “点击播放”不会暂停此大小的SWF。所以,我尝试使用-webkit-transfor: scale(0.5)
来使用CSS将其缩放回所需的大小。 Chrome会计算最终渲染的尺寸并暂停SWF。stage.frameRate
返回正确的值(例如,它未设置为0以暂停SWF)在写这个问题时,我找到了答案,决定在这里发帖,以防其他人需要帮助解决这个问题。
答案 0 :(得分:3)
答案 1 :(得分:2)
要绕过Chrome点击播放限制,请从与您的网站相同的域和协议加载SWF。
您可以使用AS3 ThrottleEvent
来检测SWF何时受到限制。
// AS3 code
import flash.events.ThrottleEvent;
import flash.external.ExternalInterface;
stage.addEventListener(ThrottleEvent.THROTTLE, onThrottleEvent);
private function onThrottleEvent(e:ThrottleEvent) {
ExternalInterface.call("onThrottleEvent", e.state); // call javascript function
}
您可以设置ExternalInterface
来跟踪此状态,以便在JavaScript中管理您的SWF z-index
,以及是否受到限制。
// JS Code
var IS_THROTTLED = false;
window.onThrottleEvent = function (throttleState) {
IS_THROTTLED = (throttleState === "throttle");
}
答案 2 :(得分:2)
在页面底部添加一个大于398x298的空Flash文件。我发现,一旦您拥有至少一个Flash文件,他们的最低版Chrome就不会暂停您的任何Flash。你不能用CSS隐藏这个额外的Flash文件。 (可选)使用javascript超时(3秒)隐藏空Flash文件,以防它与您的页面布局混淆。我正在使用swfObject进行嵌入。