我有一个使用Flash动画的页面(这些并不重要但是额外的)。
如果我没有使用Opera激活Turbo,一切正常。然后,Flash电影在闪光电影大小的圆圈中显示为一个巨大的丑陋箭头,用作闪光灯的播放按钮。
我正在使用SWFobject,所以如果我知道是否使用了Opera的turbo机制,我可以很容易地转动动画,但是如何在JavaScript中实现这一点(如果这样的话,也可能是CSS)
如何重现?
使用Opera(或使用闪光灯的任何其他页面)浏览此页面
http://www.adobe.com/software/flash/about/
没有Opera Turbo,您会看到Flash动画和Flash版本信息
使用Opera Turbo,您会看到两个灰色圆圈的白色箭头
编辑1 我现在很确定,没有纯粹的JS解决方案,也没有PHP解决方案。最好的猜测是AS / JS组合解决方案。
答案 0 :(得分:5)
客户端检测: 没有办法通过javascript访问它。目前无法对Opera turbo进行客户端检测,未来可能会支持它但是谁知道呢?
服务器端检测: 当启用Opera turbo时,来自客户端的所有请求都将完成到Opera服务器,Opera服务器将访问您的应用程序(执行压缩)并将处理后的内容转发到最终客户端(用户的计算机)。
考虑到这一点,让我们做一些网络嗅探,看看你的连接在哪里:
~$ nslookup opera10beta-turbo.opera-mini.net
>Server: 189.40.226.80
>Address: 189.40.226.80#53
>Non-authoritative answer:
>opera10beta-turbo.opera-mini.net canonical name = global-turbo-1.opera-mini.net.
>Name: global-turbo-1.opera-mini.net
>Address: 141.0.11.252
~$ nslookup 64.255.180.252
>Server: 192.168.1.254
>Address: 192.168.1.254#53
>Non-authoritative answer:
>252.180.255.64.in-addr.arpa canonical name = 252.0-24.180.255.64.in-addr.arpa.
>252.0-24.180.255.64.in-addr.arpa name = global-turbo-1-lvs-usa.opera-mini.net.
正如您所看到的,Opera服务器中的名称和规范名称可用于检测您是否通过opera服务器中介访问应用程序。我认为服务器端编码可以处理(不确定您在服务器上使用的语言)。
如果您正在访问本地服务器中的某些内容,请记住Opera Turbo不会中介您的请求。
希望它有所帮助。
答案 1 :(得分:2)
我认为速度问题的答案是最初不下载Flash内容。您必须手动单击图标才能下载它。同样适用于动画GIF。这是提高速度战略的一部分。 (参见,this Opera Desktop Team post。)
这就是为什么你想知道如何检查Opera Turbo ,而不仅仅是Opera。从我的本地测试中,我无法使用PHP的_SERVER [“HTTP_USER_AGENT”]变量来区分。我认为这类似于Opera列出的用户代理字符串as shown here和here。
似乎在向网站通知浏览器条件时,Opera默默地以不同方式管理请求结果。
答案 2 :(得分:2)
您可以尝试检查flash对象是否加载了一些JavaScript。这段代码可以在Opera 11的计算机上运行:
<html>
<head>
<script language=JavaScript>
function isFlashBlocked(){
var blocked;
try {
// Can test this on any flash object on the page
window.document.myFlash.SetVariable("dummy", "dummy");
// Flash not blocked
blocked = false;
}
catch(err) {
// Flash blocked
blocked = true;
}
return blocked;
}
function removeBlockedFlash() {
if (isFlashBlocked()) {
// Hide all flash objects
window.document.myFlash.setAttribute("style", "display: none");
// ...
// Display replacement content
window.document.myImage.setAttribute("style", "display: inline");
// ...
}
}
</script>
</head>
<body onload="removeBlockedFlash()">
<object type="application/x-shockwave-flash" data="HelloWorld.swf"
width="100" height="100" id="myFlash">
</object>
<img src="image.jpg" style="display: none" id="myImage" />
</body>
</html>
如果您检测到闪光灯被阻挡,则隐藏每个闪光灯对象并显示您想要的内容。
编辑:此代码不适用于Firefox,您可能需要在使用此功能之前检测浏览器。