2010-04-25 26 views
10

Java Servlets - Làm cách nào để phát hiện xem người dùng có đến từ thiết bị di động không?Java Servlets - Làm cách nào để phát hiện xem người dùng có đến từ thiết bị di động không?

Tôi đang sử dụng trình chỉnh sửa javascript TinyMCE và nó không hoạt động trên iphone. Làm thế nào tôi có thể phát hiện nếu người dùng đến từ một thiết bị di động?

+2

Ngoài - xem định nghĩa thú vị này của một thiết bị di động: http://www.zytrax.com/tech/web/mobile_ids.html#mobile –

Trả lời

4

Tôi đang sử dụng TinyMCE javascript editor

Vì bạn muốn thay đổi hành vi phía khách hàng tùy thuộc vào khách hàng, tốt nhất là để xử lý này ở phía khách hàng chứ không phải là phía máy chủ.

Trong thế giới CSS, bạn có thể móc trên media type để áp dụng kiểu tùy thuộc vào phương tiện được sử dụng. Hầu hết các loại phương tiện được sử dụng là màn hình (thường là PC), cầm tay (thường là điện thoại di động) và in (đối với trang đã in).

Bạn có thể tận dụng nó để ẩn trình biên tập bằng cách chỉ cần các nguyên tắc sau trong CSS của bạn:

@media handheld { 
    #elementIdContainingEditor { display: none; } 
} 

Bạn thậm chí có thể chỉ định stylesheets riêng biệt tùy thuộc vào phương tiện truyền thông được sử dụng.

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

Nếu vấn đề là thực sự hơn là nó không hoạt động vì JavaScript đã bị tắt trên máy khách đặc biệt, sau đó bạn tốt hơn có để thực thi CSS đặc biệt khi JS bị vô hiệu hóa:

<noscript><style>#elementIdContainingEditor { display: none; }</style></noscript> 

Hoặc theo cách khác vòng, ban đầu ẩn nó và sau đó hiển thị nó khi JS được kích hoạt:

<script>document.getElementById('elementIdContainingEditor').style.display = 'block';</script> 

Điều này đáng tin cậy hơn là đánh hơi đại lý ở phía máy chủ.

0

Điều duy nhất khác biệt sẽ là Tác nhân người dùng. Tra cứu các tác nhân người dùng cho các trình duyệt bạn muốn phát hiện. (Không chắc chắn lý do bạn quan tâm)

Bạn cũng có thể thêm một số javascript để chạy một thứ gì đó trên trình duyệt?

8

Sử dụng request.getHeader("User-Agent"). Here là danh sách các trình duyệt dành cho thiết bị di động và Người dùng tương ứng.

0

Sử dụng tác nhân người dùng trong tiêu đề yêu cầu HTTP.

request.getHeader("User-Agent") 
23

Tôi đã sử dụng các lớp UAgentInfo.java bạn có thể tải về tại đây (http://code.google.com/p/mobileesp/source/browse/Java/UAgentInfo.java):

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(); 
} 

Các UAgentInfo lớp có một loạt các phương pháp để phát hiện các thiết bị đặc biệt là tốt. Chỉ cần thay thế detector.detectMobileQuick() cho, ví dụ: detector.detectIphoneOrIpod(), detector.detectKindle(), v.v.

CẬP NHẬT: Nếu bạn sử dụng Spring, bạn có thể muốn sử dụng triển khai gốc của nó thay thế. Dưới đây là một ví dụ: http://spring.io/guides/gs/device-detection/

+0

Ở đây là: http://search.maven.org/#search|ga|1|com.github.autograder – PaulG

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

    } else { 

    } 
} 
Các vấn đề liên quan