我担心我已经知道了答案,但我不妨冒险一下:有谁知道我是否有办法测试访问网站的客户端是否是瘦客户端(桌面终端)?这里的问题是,如果您考虑使用JavaScript(动画),瘦客户端就会开始出现可怕的延迟。
我基本上想要提供一个" light"该网站的版本,我根据客户端禁用所有特殊效果。我看过用户代理,但似乎没有给出任何有用的东西。
有什么方法可以说出来吗?
答案 0 :(得分:2)
没有真正干净的解决方法,因为瘦客户端或远程桌面没有HTTP头。
但是,如果您确实需要一个解决方案来识别慢速客户端,您可以尝试以下方法。它类似于Google在地图上用来确定客户端是否可以处理地图的内容。
在这种方法中,您将使用一大堆嵌入式JavaScript提供HTML页面。此块执行资源繁重的操作,该操作应与您的实际代码相似。
您可以衡量此操作所消耗的时间,并确定其是否正常运行。
现在,您可以通过创建带有document.write
的脚本标记并传递一个参数来加载实际的JavaScript,该参数告诉脚本运行哪种模式,或者通过使用适当的参数初始化已加载的代码。
一个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 提出。谢谢!
答案 1 :(得分:-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
}
希望这可以帮助所有想要检测用户是否在桌面上打开页面的人