Java servlet-如何检测用户是否来自移动设备?

Java servlet-如何检测用户是否来自移动设备?,java,javascript,servlets,mobile,Java,Javascript,Servlets,Mobile,Java servlet-如何检测用户是否来自移动设备 我正在使用TinyMCE javascript编辑器,但它在iphone上不起作用。如何检测用户是否来自移动设备?唯一不同的是用户代理。查找要检测的浏览器的用户代理。(不知道你为什么会在意) 您还可以添加一些javascript在浏览器上运行一些东西?使用request.getHeader(“用户代理”)。是移动浏览器及其各自用户代理的列表。使用HTTP请求头中的用户代理 request.getHeader("User-Agent") 我

Java servlet-如何检测用户是否来自移动设备


我正在使用TinyMCE javascript编辑器,但它在iphone上不起作用。如何检测用户是否来自移动设备?

唯一不同的是用户代理。查找要检测的浏览器的用户代理。(不知道你为什么会在意)


您还可以添加一些javascript在浏览器上运行一些东西?

使用
request.getHeader(“用户代理”)
。是移动浏览器及其各自用户代理的列表。

使用HTTP请求头中的用户代理

request.getHeader("User-Agent")
我正在使用TinyMCE javascript编辑器

由于您希望根据客户机改变客户机端的行为,因此最好在客户机端而不是服务器端处理

在CSS世界中,您可以根据所使用的媒体挂钩以应用样式。最常用的媒体类型是屏幕(通常是PC)、手持(通常是手机)和打印(用于打印页面)

您可以通过CSS中的以下规则来使用它隐藏编辑器:

@media handheld {
    #elementIdContainingEditor { display: none; }
}
您甚至可以根据使用的介质指定单独的样式表

<link rel="stylesheet" href="default.css" media="screen">
<link rel="stylesheet" href="mobile.css" media="handheld">

如果问题实际上更严重,因为特定客户端上禁用了JavaScript而无法工作,那么最好在禁用JS时执行特定CSS:

<noscript><style>#elementIdContainingEditor { display: none; }</style></noscript>
#elementIdContainingEditor{display:none;}
或者反过来,首先隐藏它,然后在启用JS时显示它:

<script>document.getElementById('elementIdContainingEditor').style.display = 'block';</script>
document.getElementById('elementIdContainingEditor').style.display='block';
这比在服务器端嗅探代理更可靠。

我使用了UAgentInfo.java类,您可以在这里下载():

UAgentInfo类也有一系列方法来检测特定的设备。只需更换detector.detectMobileQuick(),例如detector.DetectPhoneOriPod()、detector.detectKindle()等


更新:如果您使用Spring,您可能希望改用它的本机实现。下面是一个例子:

放在一边-请看这个有趣的移动设备定义:
private boolean isRequestComingFromAMobileDevice(final HttpServletRequest request){

    // http://www.hand-interactive.com/m/resources/detect-mobile-java.htm
    final String userAgent = request.getHeader("User-Agent");
    final String httpAccept = request.getHeader("Accept");

    final UAgentInfo detector = new UAgentInfo(userAgent, httpAccept);

    return detector.detectMobileQuick();
}
public void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
  if(request.getHeader("User-Agent").indexOf("Mobi") != -1) {

  } else {

  }
}