官术网_书友最值得收藏!

4.4 整人游戲:我不是弱智!

筆者以前經常被QQ控件或各種論壇上的某個標題所吸引,打開之后卻發現網頁中彈出一個對話框,必須不斷地點擊煩人的按鈕無數次才能關閉這個頁面。當時也曾經在網上搜索過相應的教程,可惜一直都沒有成功。時隔多年,筆者又想起了當年的“悲慘經歷”,于是決定在這里與讀者分享下面的例子。

在Sublime中編輯4個文件,分別為index.html、question.html、confirm.html、result.html。下面給出具體代碼。

【范例4-5 游戲的開始頁面index.html】

        01    <! DOCTYPE html>
        02
        03    <head>
        04    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        05    <meta name="viewport" content="width=device-width, initial-scale=1">
        06   <title>游戲開始</title>
        07    <link rel="stylesheet" href="jquery.mobile.min.css" />
        08    <script src="jquery-2.1.4.min.js"></script>
        09    <script src="jquery.mobile.min.js"></script>
        10    <! --<script type="text/javascript" src="cordova.js"></script>-->
        11    </head>
        12    <body>
        13         <div data-role="page">
        14        <a href="question.html" data-role="button" data-rel="dialog">開始游戲
    </a>
        15        </div>
        16    </body>
        17    </html>

【范例4-6 詢問讀者是否是弱智的頁面question.html】

        01    <! DOCTYPE html>
        02
        03    <head>
        04    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        05    <meta name="viewport" content="width=device-width, initial-scale=1">
        06   <title>老實交代!你到底是不是弱智!</title>
        07    <link rel="stylesheet" href="jquery.mobile.min.css" />
        08    <script src="jquery-2.1.4.min.js"></script>
        09    <script src="jquery.mobile.min.js"></script>
        10    <! --<script type="text/javascript" src="cordova.js"></script>-->
        11    </head>
        12    <body>
        13         <div data-role="page">
        14        <h1>老實交代!你到底是不是弱智!</h1>
        15            <a href="result.html" data-role="button">這你都知道!! ! ! </a>
         //跳至最終頁面
        16            <a href="confirm.html" data-role="button" data-rel="dialog">死不承
    認!</a> //繼續循環
        17        </div>
        18    </body>
        19    </html>

【范例4-7 另一個詢問頁面confirm.html】

        01    <! DOCTYPE html>
        02
        03    <head>
        04    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        05    <meta name="viewport" content="width=device-width, initial-scale=1">
        06   <title>老實交代!你到底是不是弱智!</title>
        07    <link rel="stylesheet" href="jquery.mobile.min.css" />
        08    <script src="jquery-2.1.4min.js"></script>
        09    <script src="jquery.mobile.min.js"></script>
        10    <! --<script type="text/javascript" src="cordova.js"></script>-->
        11    </head>
        12    <body>
        13         <div data-role="page">
        14        <h1>老實交代!你到底是不是弱智!</h1>
        15            <a href="result.html" data-role="button">我承認,我是</a>//跳至最終
    頁面
        16            <a href="question.html" data-role="button" data-rel="dialog">我不
    是!</a> //繼續循環
        17        </div>
        18    </body>
        19    </html>

【范例4-8 游戲結束頁面result.html】

        01    <! DOCTYPE html>
        02
        03    <head>
        04    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        05    <meta name="viewport" content="width=device-width, initial-scale=1">
        06   <title>你這個弱智</title>
        07    <link rel="stylesheet" href="jquery.mobile.min.css" />
        08    <script src="jquery-2.1.4.min.js"></script>
        09    <script src="jquery.mobile.min.js"></script>
        10    <! --<script type="text/javascript" src="cordova.js"></script>-->
        11    </head>
        12    <body>
        13         <div data-role="page">
        14             <h1>早點承認不就好了么,何必這么麻煩!</h1>
        15        </div>
        16    </body>
        17    </html>

運行后的結果如圖4-6~圖4-9所示。

圖4-6 游戲開始圖

4-7 對話框提問用戶

圖4-8 反復提問

圖4-9 最后結果

首先單擊“開始游戲”按鈕,就會看到頁面中有文字詢問用戶是否承認自己是弱智,若是愿意承認自己是弱智,則可以轉到圖4-9所示的頁面,游戲結束,否則一直循環。

各位聰明而又細心的讀者想必已經發現,本節使用的鏈接代碼中又加入了一個新的屬性data-rel="dialog"。這句代碼是干什么用的呢?看上去并沒有產生特殊效果。

首先dialog就是jQuery Mobile已經給用戶定義好了對話框控件,使用它可以實現一些與一般頁面不同的交互效果,讀者可以自己嘗試。當運行到圖4-9所示的游戲結束頁面時,點擊手機上的返回鍵,會發現頁面返回到了圖4-6所示的界面。然后去掉data-rel="dialog",再看效果會發現,點擊返回鍵后會完整地重復圖4-7以及圖4-8所示的界面。

讀者可以想象,這跟我們在PC上瀏覽網頁時的返回按鈕非常相似,由于瀏覽器會使用哈希來記錄已經訪問過的頁面,從而使其在返回時能夠記錄已經訪問過的頁面。而對于以對話框形式打開的頁面,則不記錄其哈希值,瀏覽器將不會對這些頁面進行記錄。

當然,有一部分人會通過“返回”的方式來重復答題以獲得虛假的高分。那么,如果在這里使用對話框控件就能比較容易地解決這一難題。

提示

為了加快頁面的加載速度,可以嘗試將多個page放在同一個頁面中,這種方法將會在后面的章節進行介紹。

主站蜘蛛池模板: 满城县| 辽源市| 西和县| 延庆县| 康乐县| 区。| 利津县| 揭西县| 金昌市| 仲巴县| 龙胜| 河间市| 永泰县| 邹城市| 昭通市| 正宁县| 名山县| 沙湾县| 敖汉旗| 鄂伦春自治旗| 玉树县| 隆林| 尤溪县| 兴化市| 桃园县| 漳平市| 赣榆县| 渭南市| 额济纳旗| 日土县| 七台河市| 长治县| 苍溪县| 松原市| 鹤山市| 改则县| 桓仁| 从江县| 荃湾区| 庐江县| 威远县|