2011-12-12 22 views
5

Các nút chậm trên điện thoại di động (chậm nhất là 300ms ở hầu hết các trình duyệt do phát hiện kéo trong số những thứ khác). Google đã viết một số javascript để sửa lỗi này: http://code.google.com/mobile/articles/fast_buttons.htmlLàm cách nào để sử dụng mã FastButton của Google/MBP với các sự kiện xương sống

Dân Mobile HTML5 Boilerplate tích hợp này vào gói của họ: https://github.com/h5bp/mobile-boilerplate/blob/master/js/mylibs/helper.js#L86

Tôi muốn tìm ra làm thế nào tôi có thể dễ dàng sử dụng với xương sống. Một cái gì đó như:

events: { 
    "fastbutton button.save": "save" 
} 

Trường hợp nút bấm nhanh thay thế nhấp chuột hoặc được dán bằng mã nút nhanh. Tôi hy vọng rằng tôi sẽ cần phải viết lại mã MPB.fastbutton một chút. Có ai đã làm điều này?

Trả lời

8

Thay vì tạo 'fastbuttons' ở khắp mọi nơi, nó có thể lành mạnh hơn để sử dụng một thư viện như FastClick rằng minh bạch sẽ chuyển đổi chạm để nhấp vào các sự kiện trên yếu tố xúc động và thoát khỏi sự chậm trễ 300ms đó.

Dễ dàng như new FastClick(document.body) và bạn đã sẵn sàng. Ưu điểm của cách tiếp cận đó là nếu hoặc khi hành vi của các sự kiện cảm ứng thay đổi trên thiết bị di động để không có sự chậm trễ về các yếu tố có đăng ký sự kiện, bạn chỉ có thể thay đổi một dòng mã để thả thư viện thay vì thay đổi tất cả mã của bạn để chuyển đổi 'fastbuttons' thành các nút thông thường. Khả năng duy trì luôn tốt.

+1

Tôi chưa thử nghiệm nhưng điều này nghe có vẻ giống như những gì tôi (vẫn cần). –

+0

Chỉ cần thử nghiệm nó trên ứng dụng xương sống sandbox của tôi - hoạt động chính xác như mô tả. Có một vấn đề khả năng mở rộng có thể với instantiating đối tượng 'FastClick' trên toàn bộ' document.body'? Tài liệu này chỉ bao gồm các ví dụ về việc khởi tạo lớp trên các phần tử cụ thể. –

+1

Ứng dụng web FT sử dụng FastClick được khởi tạo trên 'document.body' và không có bất kỳ vấn đề nào. Có lẽ tôi nên cập nhật các ví dụ để làm cho nó rõ ràng rằng thực hành thông thường là để nhanh chóng trên cơ thể. –

1

Tôi chắc chắn điều này sẽ không hoạt động theo cách bạn muốn. Thay vì có một sự kiện bổ sung, như nói "fastclick", bạn phải định nghĩa một phần tử như beeing một fastButton. Bạn thực sự phải tạo một thể hiện của fastbutton mà bạn vượt qua các phần tử và các mã như thế này:

new MBP.fastButton($("button.save"), function() { this.save(); }.bind(this)); 

Trong trường hợp của xương sống, bạn có thể dễ dàng làm điều này trong initialize() chức năng thay vì các sự kiện phản đối.

// xin lỗi, chỉ cần đọc rằng bạn đang không thực sự tìm kiếm này :)

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