我担心我已经知道答案了,但我还是冒险吧:有没有人知道我是否有办法测试访问网站的客户端是否是瘦客户端(桌面终端)?这里的问题是,如果您甚至考虑使用JavaScript(动画),瘦客户机就会开始严重滞后。
我基本上想提供一个“轻”版本的网站,在那里,我禁用所有的特殊效果取决于客户端。我看过用户代理,但这似乎没有提供任何有用的东西。
有什么办法可以说吗?
发布于 2014-09-08 10:17:08
没有真正干净的方法来解决这个问题,因为对于瘦客户端或远程桌面来说,不存在HTTP头之类的东西。
但是,如果您确实需要一个解决方案来识别慢客户端,则可以尝试以下方法。这类似于Google在地图上使用什么来确定客户端是否能够处理地图。
在这种方法中,您将使用一块嵌入的JavaScript来交付HTML页面。这个块执行一个资源繁重的操作,应该与您的实际代码类似。
您可以度量此操作所消耗的时间,并确定其性能是否良好。
现在,您可以通过使用JavaScript创建脚本标记并传递一个参数来加载实际的document.write,或者通过使用适当的参数初始化已经加载的代码。
一个快速的‘n’脏示例实现看起来如下(使用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>微妙的部分是定义什么是“快”,因为可能有不同的原因,时间代码运行缓慢。你可能会得到太多的假阴性或假阳性。
编辑:由@fero提议的更新的JS示例。谢谢!
发布于 2014-09-08 10:17:19
没有直接的方法可以找到桌面终端中打开的页面,但是有一种棘手的方法。您总是可以找到哪个移动设备用户视图,您可以在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
}希望这有助于所有想要检测用户是否打开桌面页面的人。
https://stackoverflow.com/questions/25721043
复制相似问题