Flash在安卓浏览器中始终处于领先地位
Flash always on top in Android browser workaround?
我有一个网站,在后面有一个简单的Flash动画,一些文本和半透明图像作为背景。我已经使用swfobject来嵌入它,并将wmode设置为不透明,以使它在大多数浏览器中正确显示。
对于没有Flash的浏览器,用户会得到一个静态的背景图像,并且不会知道他们缺少了什么。然而,根据安卓浏览器中flash内容的渲染方式导致网站无法使用的已知问题,安卓用户会在所有内容之上获得flash背景。
我在swfobject代码中添加了一个粗糙的浏览器嗅探javascript函数,以防止它为任何包含"Mobile"的用户代理加载:
<script type="text/javascript">
if (navigator.userAgent.indexOf('Mobile') == -1)
{
var flashvars = {};
var params = { wmode: "opaque" };
var attributes = {};
swfobject.embedSWF("Images/Layout/center_flash.swf", "flashBg",
"1004", "502", "9", "false", flashvars, params, attributes);
}
</script>
我剩下的唯一问题是安卓用户在关闭"移动视图"的情况下浏览,因为用户代理假装是Safari的桌面版本(我认为)。我不希望为所有Safari用户禁用Flash动画。有没有办法只为Andriod用户屏蔽它——即使他们禁用了"移动视图"?
可能的想法包括:
- 使用JavaScript或Flash检测Flash版本。安卓系统是否使用与台式机不同的特定版本(版本号)的Flash
- 在禁用"移动视图"的情况下阻止安卓设备使用的特定用户代理
有人为这个问题想出了有效的解决办法吗?
感谢您的帮助/意见!
您只能通过在JavaScript 中检查浏览器的userAgent来检测android
类似这样的东西:
if (navigator.userAgent.toLowerCase().indexOf("android") != -1)
{
// It's android
}
至于闪光问题本身,我不知道,因为我从来没有使用过闪光:p
编辑
你也可以将这种技术用于其他用户代理(例如iPhone、iPad、safari)
edit2
对不起,我刚上了我的android手机,意识到实际设置会将userAgent更改为用户选择的任何内容(桌面/ipad/iphone/safari)。那不好,我道歉。
不幸的是,你所要求的是非常困难的。在android flash版本中没有唯一的标识符可以为您提供任何帮助。安卓欺骗userAgent的事实使得无法检测他们是否在移动设备上。
有一些服务可以根据用户的IP告诉您用户是否在移动设备上。
很抱歉,我不知道它们有多快、可靠或昂贵,但如果你必须确定用户是否在安卓系统上,这是一个考虑的途径
- 检查网络驱动程序是否浏览器仍处于打开状态
- 如何使setInterval在浏览器选项卡处于焦点时运行
- 如何在Github电子原子中禁用或使浏览器窗口处于非活动状态
- 检测浏览器选项卡是否处于活动状态或用户是否已切换
- 在正文中异步加载的JS使浏览器处于“加载”模式
- 如何检查浏览器的“mywindow”选项卡在 asp.net 4.0中是否处于活动状态
- 每当浏览器加载图标处于活动状态时显示加载图标
- Flash在安卓浏览器中始终处于领先地位
- 切换“.show”和“.hide”,条件始终为“.show”,如果浏览器视口处于特定宽度或更大.(响应式/移动菜单)
- 了解开发者控制台在当前浏览器(JavaScript)中是否处于活动状态
- 当浏览器选项卡/窗口处于活动状态时进行检测
- 检测浏览器窗口是否处于活动状态,并在窗口再次处于活动状态后启动事件[JavaScript]
- 如果移动浏览器未打开或处于活动状态,请在Javascript/jQuery中进行检测
- 如何防止浏览器选项卡/窗口在我处于 onbeforeunload 事件时关闭
- 如果用户在不按登出的情况下关闭浏览器,如何使其处于脱机状态
- HTML5 canvas游戏不会在浏览器未处于焦点时暂停渲染
- 对于移动浏览器,当文本字段处于焦点中时,我如何“推送”?将文本字段移至页面顶部,而不是默认的中间位置
- 如何查看浏览器的地址栏是否处于活动状态
- 如何判断浏览器/选项卡是否处于活动状态,并在用户离开时调低音量
- 如何检查浏览器窗口是否处于活动状态