在開發移動網站過程中,有一些Javascript代碼會經常用到。以下是10段常用的JavaScript代碼。需要注意的是某幾段代碼需要jQuery mobile framework支援。
1.如果網頁是在iPhone或Android瀏覽器中查看,則在主體元素中添加“iPhone”或“Android” 類名
Javascript代碼
- if (navigator.userAgent.match(/iPhone/i)) {
- $('body').addClass('iPhone');
- } else if (navigator.userAgent.match(/Android/i)) {
- $('body').addClass('Android');
- }
iPhone使用者瀏覽樣本:
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A537a Safari/419.3
Mozilla/5.0 (iPhone; U; XXXXX like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A477d Safari/419.3
Android使用者瀏覽樣本:
Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 1.6; en-gb; Dell Streak Build/Donut AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/ 525.20.1
Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17
Mozilla/5.0 (Linux; U; Android 2.2; en-us; DROID2 GLOBAL Build/S273) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; E10i Build/2.0.2.A.0.24) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17
2. 移除瀏覽器地址欄
Javascript代碼
- window.scrollTo(0, 1);
3. 防止網頁觸摸滾動
Javascript代碼
- notouchmove = function(event) {
- event.preventDefault();
- }
- <div data-role="page" id="home" ontouchmove="notouchmove(event);">
- ...
- </div>
4. 當橫向瀏覽時顯示資訊
Javascript代碼
- var updateorientation = function (){
- var classname = '',
- top = 100;
- switch(window.orientation){
- case 0:
- classname += "normal";
- break;
-
- case -90:
- classname += "landscape";
- break;
-
- case 90:
- classname += "landscape";
- break;
-
- }
-
- if (classname == 'landscape') {
- if ($('#overlay').length === 0) {
- window.scrollTo(0, 1);
- $('body').append('<div id="overlay" style="width: 100%; height:' + $(document).height() + 'px"><span style="top: ' + top + 'px">Landscape view is not supported for this page.</span></div>');
- }
- } else {
- $('#overlay').remove();
- }
- };
- Usage:
-
- var supportsOrientationChange = "onorientationchange" in window,
- orientationEvent = supportsOrientationChange ? "orientationchange" : "resize";
-
- window.addEventListener(orientationEvent, function() {
- updateorientation();
- }, false);
5.顯示部分描述資訊,當點擊時顯示完整資訊
Javascript代碼
- var truncatedesc = function(trunc, len) {
- if (trunc) {
- var org = trunc;
-
- if (trunc.length > len) {
- trunc = trunc.substring(0, len);
- trunc = trunc.replace(/w+$/, '');
-
- trunc = '<span class="truncated">' + trunc;
- trunc += '<strong class="more-description">...</strong></span>';
- trunc += '<span class="original" style="display: none;">' + org + '</span>';
- }
-
- $('.truncated').live("touchstart touchend", function() {
- $(this).closest('div').find('.original').show();
- $(this).closest('div').find('.truncated').hide();
- return false;
- });
-
- return trunc;
- }
- };
- Usage:
-
- truncatedesc(item.description, 100);
6. 收到成功的Ajax請求時,重新導向到另一個頁面(jQuery mobile)
Javascript代碼
- var ajaxurl = ‘http://…’; // Your web service URL
-
- $.ajax({
- url: ajaxurl,
- type: 'GET',
- processData: false,
- contentType: "application/json",
- dataType: "jsonp",
- success: function(data) {
- $.mobile.changePage("results.html");
- },
- error: function() {
- alert('Error!');
- }
- });
7. 從列表視圖的連結中刪除活動狀態(jQuery mobile)
Javascript代碼
- $('div').live('pageshow', function (event, ui) {
- $('[data-role=listview] li').removeClass("ui-btn-active");
- });
8. 從下拉選擇中禁用預設的jQuery mobile樣式(jQuery mobile)
Javascript代碼
- $(document).bind("mobileinit", function(){
- $.mobile.page.prototype.options.keepNative = "select";
- });
9. 動態更新列表視圖(jQuery mobile)
Javascript代碼
- var output = '<li><img src="' + item.image + '" alt="' + item.title + '" />';
- output += '<h3><a href="' + item.url + '">' + item.title + '</a></h3>';
- output += '</li>';
-
- $('#mylistul').append(output).listview('refresh');
10. 動態添加表單輸入和應用預設樣式(jQuery mobile)
Javascript代碼
- var html = '<input type="search" name="suburb" id="suburb" placeholder="Enter suburb" />';
- $('#searchform').append(html);
- $('#suburb').textinput();
推薦書籍
下面兩本關於HTML5和jQuery的書將有助於你理解和使用jQuery mobile架構。
HTML5: Up and Running
jQuery: Novice to Ninja