2012-01-28 42 views
9

Tôi đã nghĩ đến việc làm điều gì đó với jQuery.browser nhưng điều này chỉ trả về trình duyệt bạn đang sử dụng và nếu nó là một webkit, v.v ...Trong javascript 'Nếu điện thoại di động'

Vì vậy, về cơ bản tôi muốn tắt các tệp js nhất định thậm chí tải nếu bạn đang sử dụng thiết bị di động?

Tôi cho rằng bạn có thể làm điều đó nhưng làm cách nào?

+1

Không phải là một giải pháp JavaScript, nhưng tôi đã sử dụng này cho một thời gian: http: // detectmobilebrowsers. mobi/ – Brad

+2

Bạn nên thực hiện trên máy chủ chứ không phải máy khách. – epascarello

+0

tôi đồng ý. tôi đã sẵn sàng. Phát hiện trên những gì trình duyệt nói với tôi anh ta. Tôi muốn kiểm tra lại;) –

Trả lời

27

Tôi nghĩ this answer là tốt hơn bởi vì nó không phụ thuộc vào chiều rộng màn hình:

if(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) { 
    // some code.. 
} 

Tôi biết rằng bây giờ bạn đã có sự phụ thuộc vào trình duyệt thương hiệu, nhưng điều này có thể duy trì được một chút để kiểm tra kích thước màn hình.

+0

Đã cập nhật và thêm làm câu trả lời đúng. Tôi cũng đây này là một giải pháp tốt hơn cho bây giờ. Tôi vẫn muốn một cái gì đó khác hơn là người sử dụng sniffing mặc dù. –

+0

Nếu bạn đang đi để đi tuyến đường này, bạn có thể làm điều đó phía máy chủ, tác nhân người dùng có sẵn không giống như chiều rộng màn hình (trừ khi bạn làm cho nó có sẵn). – Jasper

+1

heh, xuống bỏ phiếu câu hỏi jasper? ekk bit trẻ con bởi vì tôi thay đổi bạn như là câu trả lời đúng: D Vấn đề tôi có với chiều rộng bây giờ là các thiết bị ngày báo cáo chiều rộng ở mức rất khác nhau. Ngay cả khi nó phải là một thứ nó đưa ra ở một chiều rộng khác nhau –

14

Bạn có thể sử dụng kích thước màn hình, cách mà bạn tải UI nhỏ của bạn cho màn hình nhỏ:

if ($(window).width() < 480 || $(window).height() < 480) { 
    //small screen, load other JS files 
    $.getScript('/js/script.js', function() { 
     //the script has been added to the DOM, you can now use it's code 
    }); 
} 

Documents cho $.getScript(): http://api.jquery.com/jquery.getscript

+1

Độ phân giải màn hình không phù hợp để phát hiện khả năng thiết bị di động. Nhiều thiết bị có độ phân giải màn hình cao/thấp có khả năng khác nhau, cả trên thiết bị di động và trên bàn làm việc. Ngoài ra, tôi không nghĩ rằng anh ta hỏi về UI, nhưng một số kịch bản khác. – Brad

+0

Thách thức thú vị. Hiện đang sử dụng phương tiện truyền thông quires, trong đó có vấn đề của họ. Giống như brad cho biết có những hạn chế với các trình duyệt di động, chúng nói dối và cung cấp các kích thước ngớ ngẩn. Tôi sẽ làm trên màn hình thay đổi kích cỡ chỉ cần kiểm tra. Tôi tự hỏi làm thế nào tham lam nó sẽ được mặc dù. –

+0

Kích thước màn hình được cung cấp cho các thiết bị di động có thể bị lập dị nhưng bạn có thể vào trong sân chơi bóng chày với chúng. – Jasper

0

Vấn đề với các thiết bị di động so với các trình duyệt truyền thống là .. Vâng, sự khác biệt là gì?

Có các máy tính để bàn có kết nối chậm hơn điện thoại di động của bạn. Có điện thoại di động có độ phân giải cao hơn với máy tính để bàn. Và sau đó, tất nhiên, ngược lại cũng đúng.

Lý tưởng nhất, bạn nên cân nhắc tạo trang web của mình theo cách hoạt động tốt trên cả hai trang web. Trong khi trong thực tế, điều này thường khó khăn, tôi nghĩ rằng những ngày này bạn sẽ tìm thấy những nỗ lực của bạn đáng giá. Người dùng của bạn cũng sẽ yêu bạn vì điều đó.

Nếu bạn vẫn cảm thấy cần phải cố gắng này ... đặc biệt là trong JavaScript ... see this post: Mobile detection

+0

Ye, tôi nghĩ rằng đây là lý do tại sao tôi đang tìm kiếm nó. Tôi không cần phải tải lên hệ thống bình luận lớn và hình ảnh động ưa thích của tôi, vv cho điện thoại di động. tôi không muốn họ sử dụng các yêu cầu http của tôi nếu có thể. –

2

Tôi biết đây là câu trả lời rất muộn và bạn có thể giải quyết được vấn đề của mình. Nhưng dù sao, đây là những gì tôi sử dụng cho tất cả các dự án của tôi:

window.isMobile = /iphone|ipod|ipad|android|blackberry|opera mini|opera mobi|skyfire|maemo|windows phone|palm|iemobile|symbian|symbianos|fennec/i.test(navigator.userAgent.toLowerCase()); 
0

$(window).resize(function(){ /*Bind an event handler to the "resize"*/ 
 
    if ($(window).width() < 480 || $(window).height() < 480) { 
 
     //what you have to do here 
 
    } 
 
})

+1

xin vui lòng thêm giải thích cho mã này – Ibo

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