Is Opera Turbo on?

Is Opera Turbo on?

本文关键字:on Turbo Opera Is      更新时间:2023-09-26

我有一个页面,它使用Flash和动画(这些不是关键的,而是额外的)。

如果我没有使用Opera和激活的Turbo,一切都很好。然后,Flash影片显示为一个圆圈中的一个丑陋的大箭头,该箭头的大小与Flash影片的大小相同,旨在充当Flash的播放按钮。

我使用的是SWFobject,所以如果我知道Opera的turbo机制是否被使用,我可以很容易地打开动画,但我如何在JavaScript(或者如果是CSS)中做到这一点


如何繁殖
使用Opera(或任何其他使用flash的页面)浏览此页面
http://www.adobe.com/software/flash/about/
如果没有Opera Turbo,您将看到flash动画和flash版本信息使用Opera Turbo,您可以看到灰色圆圈中的两个白色箭头


编辑1我现在很确定,没有一个纯粹的JS解决方案,也没有一个PHP解决方案。最好的猜测是AS/JS组合解决方案。

客户端检测:没有办法通过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不会对您的请求进行中间处理。

希望能有所帮助。

您可以尝试检查flash对象是否加载了一些javascript。这段代码在我的Opera11:电脑上运行

<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,您可能需要在使用此功能之前检测浏览器。

我认为速度问题的答案是最初没有下载Flash内容。你必须手动点击图标才能下载。动画GIF也是如此。这是提高速度策略的一部分。(参见Opera Desktop Team的帖子。)

这就是为什么你想知道如何检查OperaTurbo,而不仅仅是Opera。从我的本地测试中,我无法使用PHP的_SERVER["HTTP_USER_AGENT"]变量来区分。我认为这类似于Opera列出的用户代理字符串,如这里和这里所示。

Opera似乎并没有将浏览器状况通知网站,而是以不同的方式默默地管理请求结果。