pot*_*nch 13 javascript flash google-chrome
您如何检测到Flash插件已被暂时禁用,或者相反,如果检测到Chrome已启用,则会因Chrome的"点击播放"功能而启用?
Chrome的新"点击播放"功能会检测不明显的插件,并暂停它们.Chrome在插件上显示"播放"按钮,用户可以点击"播放"按钮激活插件.(参考:https://productforums.google.com/forum/#!topic /rome/xPcpRBzyPcc)
您可以在此屏幕截图中看到它已暂停视频播放器(右栏).该视频播放器具有基于HTML5的控件,覆盖基于Flash的视频播放器.因此,用户无法单击播放按钮,因为基于HTML5的播放/暂停控件有目的地涵盖整个SWF.
我需要的是检测SWF何时被"点击播放"功能暂停,这样我就可以禁用控件并使SWF交互.
ExternalInterface虽然SWF暂停,但仍然可以使用所有暴露在外的方法.它实际上响应它正在播放并且不会返回错误.<object>为> 700x400px."点击播放"不会暂停此大小的SWF.因此,我尝试-webkit-transfor: scale(0.5)使用CSS将其缩放回所需的大小.Chrome计算最终渲染大小并暂停SWF.stage.frameRate返回正确的值(例如,它未设置为0以暂停SWF)在写这个问题时,我找到了答案,决定在这里发帖,以防其他人需要帮助解决这个问题.
要规避 Chrome 点击播放限制,请从与您的网站相同的域和协议加载 SWF。
您可以使用 AS3ThrottleEvent来检测 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
}
Run Code Online (Sandbox Code Playgroud)
您可以设置一个ExternalInterface调用来在 JavaScript 中跟踪此状态,并z-index根据 SWF 是否受到限制在 JavaScript 中进行管理。
// JS Code
var IS_THROTTLED = false;
window.onThrottleEvent = function (throttleState) {
IS_THROTTLED = (throttleState === "throttle");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3824 次 |
| 最近记录: |