2011-12-12 17 views
5

移動設備上的按鈕速度很慢(由於拖動檢測等因素,大多數瀏覽器的延遲至少爲300毫秒)。谷歌寫了一些javascript來解決這個問題: http://code.google.com/mobile/articles/fast_buttons.html如何在骨幹事件中使用Google的/ MBP FastButton代碼

的移動HTML5樣板的人整合到這一點他們的包: https://github.com/h5bp/mobile-boilerplate/blob/master/js/mylibs/helper.js#L86

我想弄清楚如何我可以很容易地與骨幹網使用。類似於:

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

其中fastbutton用快速按鈕代碼代替click或mousedown。我希望我需要稍微重寫MPB.fastbutton代碼。有人做過這個嗎?

回答

8

而不是創造「fastbuttons」無處不在的,它可能更理智使用像FastClick庫,將透明地轉換到觸摸點擊事件觸動的元素並擺脫那300ms的延遲。

這就像new FastClick(document.body)一樣簡單,你就可以走了。

該方法的優點是,如果觸摸事件的行爲在移動設備上發生變化,以便在註冊了單擊事件的元素上沒有延遲,則可以更改一行代碼以刪除該庫,而不是改變你的所有代碼,將'快速按鈕'轉換爲常規按鈕。可維護性總是好的。

+1

我還沒有測試過,但這聽起來像我(仍)需要的。 –

+0

剛剛在我的沙箱骨幹應用上測試過它 - 完全按照所述進行工作。在整個'document.body'實例化'FastClick'對象時是否存在可擴展性問題?該文檔僅包括在特定元素上實例化類的示例。 –

+1

FT網頁應用程序使用FastClick在'document.body'上實例化,並且沒有任何問題。也許我應該更新這些例子來說明通常的做法是在身體上實例化。 –

1

我很肯定,這不會按照你喜歡的方式工作。而不是像「fastclick」那樣需要額外的事件,你必須定義一個元素作爲一個fastButton。實際上,你必須創建在其中傳遞的元素與碼這樣fastbutton的一個實例:不是

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

事件對象骨幹的情況下,你可以很容易地做到這一點在initialize()函數。

//對不起,剛纔讀的你是不是真的找這個:)