4

我担心我已经知道答案,但我不妨冒险:有谁知道是否有某种方法可以测试访问网站的客户端是否是瘦客户端(桌面终端)?这里的问题是,即使您考虑使用 JavaScript(动画),瘦客户端也会开始严重滞后。

我基本上想提供网站的“轻量级”版本,根据客户端禁用所有特殊效果。我查看了用户代理,但这似乎并没有提供任何有用的东西。

有没有办法告诉?

4

2 回答 2

2

没有真正干净的方法可以解决这个问题,因为没有用于瘦客户端或远程桌面的 HTTP 标头之类的东西。

但是如果你真的需要一个解决方案来识别慢客户端,你可以尝试以下方法。它类似于 Google 在 Maps 上使用来确定客户端是否可以处理 Maps。

在这种方法中,您将交付带有大量嵌入 JavaScript 的 HTML 页面。此块执行资源繁重的操作,该操作应类似于您的实际代码所做的操作。

您测量此操作所消耗的时间并确定它是否执行良好。

现在你加载实际的 JavaScript,或者通过创建脚本标签document.write并传递一个参数来告诉脚本在哪种模式下运行,或者通过使用适当的参数初始化已经加载的代码。

一个 quick'n'dirty 示例实现看起来像这样(使用 jQuery,但也可以用纯 JS 实现):

<script type="text/javascript">
    var
        $elem,
        now = new Date(),
        isFast,
        counter = 0;

    while (new Date() - now < 100)
    {
        $elem = $('<div style="display: none">');
        $('body').append($elem);
        $elem.remove();
        ++counter;
    }

    alert(counter);
    isFast = (counter > 100);


    // now, either embed the actual script ...
    document.write('<scr'+'ipt type="text/javascript" src="http://www.example.com/js/test.js?fast=' + isFast + '"></scr'+'ipt>');

    // ... or initialize the already loaded code
    var myControllerInstance = new MyController(isFast);
    myControllerInstance.makeStuffHappen();
</script>

微妙的部分是定义什么是“快”,因为时序代码运行缓慢可能有不同的原因。你最终可能会得到太多的假阴性或假阳性。

编辑:更新 JS 示例,由@fero提议。谢谢!

于 2014-09-08T10:17:08.157 回答
-3

没有直接的方法来查找页面是否在桌面终端中打开,但是有一个棘手的方法.. 您始终可以找到哪些移动设备用户查看,您可以在 javascript 和 php 中进行操作,如果有任何移动设备,请使用它没有检测到设备,那么你可以假设它是桌面,我已经在 php 和 js 中发布了示例代码

PHP:

function is_mobile()  {
  if (preg_match("/Mobile|Android|BlackBerry|iPhone|Windows Phone/", $_SERVER['HTTP_USER_AGENT'])) {
    return true;
   }
}

if(is_Mobile){
        // Mobile!
    } else {
        // Not mobile
    }

JS:

var isMobile = {
    Android: function() {
        return navigator.userAgent.match(/Android/i);
    },
    BlackBerry: function() {
        return navigator.userAgent.match(/BlackBerry/i);
    },
    iOS: function() {
        return navigator.userAgent.match(/iPhone|iPad|iPod/i);
    },
    Opera: function() {
        return navigator.userAgent.match(/Opera Mini/i);
    },
    Windows: function() {
        return navigator.userAgent.match(/IEMobile/i);
    },
    any: function() {
        return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
    }
};

if(isMobile.any()){
    // Mobile!
} else {
    // Not mobile
}

希望这可以帮助所有想要检测用户是否在桌面中打开页面的人

于 2014-09-08T10:17:19.727 回答