<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 22,comments - 35,trackbacks - 0

    學習自然語言的最好方法就是溶入相應的語言環境在交流中學習,學習一種編程語言的最好方法就是看例程。為了幫助大家建立WML應用的第一印象,所以請大家先看第一個例子:

    <?xml version="1.0"?>
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
    "http://www.wapforum.org/DTD/wml_1.1.xml">
    <wml>
      <template>
        <do type="prev" label="back">
          <prev/>
          <!--provide a button you can clink to back a step-->
        </do>
      </template>
    <card id="friends" title="Hot link">
      <p>
        <a >Sina WAP</a><br/>
        <a href="#nextcard">Next Card</a>
      </p>
    </card>
    <card id="nextcard">
      <p>
       this is the second card.
      </p>
    </card>
    </wml>

    通過以上示例大家應該了解到以下內容:

    1、語法:WML的語法與HTML相似,仍然是一種標記語言,而且延續了xML語法規則

    2、元素:在XML和WML 語言中,語言的基本元素稱之為"標簽"
       標簽必須被 < 和 > 括起來。
       大多數標簽都包括"起""止"兩部分,例如:<p>…</p>
       某些特殊標簽可以只有一個標簽,但是必須有結束標記,例如:<prev/>

    3、屬性:XML語言的標簽可以包含很多屬性,給標簽提供必要的附加信息
       屬性內容通常在起始標簽內使用
       屬性只作為參數為標簽提供必要的信息,不會被瀏覽器顯示
       屬性的值需要被引號括起來,可以是單引號或者雙引號,引號可以成對嵌套使用
       例如:<card id="friends" title="Hot link">

    4、注釋
       注釋內容是方便制作者閱讀源代碼,不會被瀏覽器顯示
       WML不支持注釋嵌套
       例如:<!-- This is a comment. -->

    5、文檔結構
       WML文檔是由Card和Deck構成的,一個Deck是一個或多個Card的集合。在得到客戶終端的請求之后,WML從網絡上把Deck發送到客戶的瀏覽器,訪問者可以瀏覽Deck內包含的所有Card,而不必從網上單獨下載每一個Card。

    其他一些示例中沒有涉及到的基本內容:

    6、大小寫敏感
       無論是標簽元素還是屬性內容都是大小寫敏感的,這一點繼承了XML的嚴格特性,任何大小寫錯誤都可能導致訪問錯誤,這是WML制作者必須注意的問題。

    7、躲避語法檢查的方法-CDATA
       CDATA內的數據內容都會被當作文本來處理,從而避開語法檢查,直接作為文本顯示。
       示例:
       < ! [ CDATA [ this ia <b> a test ] ] >
       顯示結果為
       this ia <b> a test

    8、定義變量
       WML可以使用變量供瀏覽器和Script使用,通過在Deck中的一個Card上設置變量,其他Card不必重新設置就可以直接調用。

      變量的語法如下:
       $identifier
       $(identifier)
       $(identifier:conversion)

      如果變量內容包含空格就需要用圓括號括起來。由于變量在語法中有最高的優先級,包含變量聲明字符的字符串會被當作變量對待,所以如果要顯示$,就一定要連續使用兩個$。

      示例:
       <p> Your account has $$15.00 in it.</p>
       顯示結果為:Your account has $15.00 in it

      XML是一種語法非常嚴格的語言,WML也繼承了這種規則,任何地不規范語法都會導致錯誤。


    WML文件的概念WML Decks

    這里簡單介紹一個關于WML文件的概念,其他的細節問題會在后面的章節還詳細介紹。

    聲明
    由于WML語言繼承于XML,所以一個有效的WML文檔必須包含一個XML聲明和一個文件類型聲明。

    以下就是一個最常用的聲明,由于WML語法要求非常嚴格,為了避免出錯,制作者可以直接拷貝粘貼到制作文檔。

    <?xml version="1.0"?>
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.com/DTD/wml_1.1.xml">

    注:<?xml version="1.0"?> 語句必須出現在一個Deck的首行,而且必須頂頭寫,插入任何字符哪怕是空格都會造成語法錯誤。

    主體結構
    這是一個最簡單的WML文件:

    <?xml version="1.0"?>
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
    "http://www.wapforum.com/DTD/wml_1.1.xml">
    <wml>
    <card title="sample">
    <p>Hello WAP!</p>
    </card>
    </wml>


    任務與導航-賦值與數據交換

    這一部分簡單講解WML的變量賦值和數據提交方法,在后面的章節中有專門講解。

    變量賦值(Setvar)
       Setvar給瀏覽器的當前頁面內變量賦值,該變量可以在當前Dock中的任意Card中調用。

      相關屬性:

      1. name 變量名,作為訪問變量的標識

        示例:<setvar name=$bogus value=$bear>

      2. value變量的值

    數據交換(Postfield)
       Postfield通過URL申請與CGI交換數據。

      相關屬性:

      name & value 交換參數用的變量的名字和值。

      示例:<postfield name=$bogus value=$bear>

    一個綜合應用的例子

    示例:

    <?xml version="1.0"?>
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.com/DTD/wml_1.1.xml">
    <wml>

    <card id="Start" title="Sina WAP">
    <do type="accept">
       <setvar name="MyCGI" value="/cgi-bin/count.pl">
       <go href="$MyCGI" method="post">
         <postfield name="one" value="one one"/>
         <postfield name="two" value="two two"/>
       </go>
      </do>
    <p>Hello World!</p>
    </card>
    </wml>

    上例相當于產生一個count.pl?one="one one"&two="two two"的Post申請。


    跳轉和傳遞參數

    go的基本屬性和應用
    實現Card之間跳轉的一個基本方法是go,go和do、anchor等標簽的結合是WML高級應用的一個基礎。

      相關屬性:

      href:聲明鏈接的URL

      sendreferer:表示是否傳遞調用href所指定的URL的頁面的URL,也就是當前頁的URL,即HTTP頭中的HTTP_REFERER,默認值為false,可選值為true

      method:WML的method與HTTP提交表單的方法類似,同樣有Post和Get兩種,缺省參數為Get。

      Post與Get的不同:Post在發送前要進行編碼處理,然后分組發送,發送過程相對安全,適合大數據量的處理;而Get方法不進行任何處理,一次性發出,適合小數據量交換。除非你肯定你提交的數據可以一次性提交,否則請盡量用Post方法。

      accept-charset:定義瀏覽器與服務器之間收發信息的字符集類型,例如:accept-charset="UTF-8,US-ASCII,ISO-8859-1"。

    示例:

    <?xml version="1.0"?>
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.com/DTD/wml_1.1.xml">
    <wml>

    <card id="Start">
       <do type="accept" label="next">
         <go href="#nextCard"/>
       </do>
    <p>This is the First Card!</p>
    </card>

    <card id="nextCard">
       <do type="prev" label="before">
         <prev/>
       </do>
    <p>This is the last card!</p>
    </card>
    </wml>

    Go結合Postfield交換參數
    標簽Go可以包含一個或多個Postfield標簽,用這些標簽攜帶參數與服務器進行數據交換。

    示例1:產生一個"quote.pl?stock=00001"Get申請

    <go href="/cgi-bin/quote.pl">
       <postfield name="stock" value="00001"/>
    </go>

    示例2:產生一個"stockname=證券&page=1"Post申請

    <go href="/cgi-bin/query.pl" method="post">
       <postfield name="stockname" value="證券"/>
       <postfield name="page" value="1"/>
    </go>


    ?

    任務和任務屏蔽

    內部任務
       返回<prev>

      用來將當前頁面的URL壓入URL歷史堆棧,并打開此前的URL,若該URL不存在,則<prev>無效。語法類似<go>,<prev>和</prev>之間可加入一句或多句<setvar name="name" value="value"/>,若不加,則必須以<prev/>的形式出現。

      刷新<refresh>

      用來刷新當前的頁面,從而使得頁面內的變量刷新或置空,語法與prev相同。<refresh> <setvar name="name" value="value"/> </refresh>,或<refresh/>。

      無動作<noop>

      表示什么也不做,該標簽不能用在<anchor>中,一般用在覆蓋DECK級的<do>。

    任務屏蔽(Task Shadowing)
       WML的Task有兩個級別,Deck級和Card級。通常人們還習慣把設置在某些條件中的任務成為第三級,在這里先不討論,后面有專門的描述。

      Deck Level:把通用的Task設置在template中,這個Deck中所有的Card都自動繼承并使用這些task。

      Card Level:只在當前的Card中有效,并替換掉Deck Level的相同屬性的Task。

    示例:

    <wml>
       <template>
         <do type="options" name="general" label="Back">
           <prev/>
         </do>
       </template>
    <!-- a deck level task-->

    <card id="Card1">
       <p>Hello , this is a test <br/>
         <a href="#card2">the second</a>
       <p>
    </card>

    <card id="Card2">
    <!-- This Card override the deck level task by noop -->
    <do name="general" type="options" label="none">
       <noop/>
    </do>
    <p>nothing happend here</p>
    </card>
    </wml>


    動作和鏈接

    設置動作(Do)
    Do是WML語言中最有有價值的元素之一,它給用戶提供一種在當前Card上進行"動作"的通用方法。這種動作通常被定位在用戶終端界面的特定部件上,例如WAP手機的功能鍵(Cancel,Option,Accept),特定的圖標,語音識別功能等等。Do可以設置在Deck的Template上或者Card上,當他們重名的時候Card上的Do會覆蓋Template上的同名元素(參看任務屏蔽說明)。

    屬性列表:

    type:訴瀏覽器動作的意圖。
       WML總共聲明了9個類型的動作,最常用的動作類型是"accept"和"option"。
       1.1 accept,接受、確認
       1.2 prev,返回上一個歷史堆棧中的URL
       1.3 help,請求幫助
       1.4 reset,清除或者重置狀態
       1.5 options,根據當前頁面的功能設置選項。
       1.6 delete,刪除選擇條目
       1.7 unknow,相當于空白字串
       1.8 還有兩個屬性還沒有最后確定。

    label:設置按鈕標題,顯示在瀏覽器定義好的屏幕位置,不同瀏覽器地顯示位置不同。如果不設置標題,按鈕會按照瀏覽器的缺省格式顯示,不同瀏覽器的缺省格式不同。

    name:按鈕名稱,可以用Card級的動作覆蓋template上的同名動作,重新賦予那些動作新的任務。

    optional:來定義一個按鈕是否顯示,設置為True時會被瀏覽器忽略

    示例:

    <do type="accept" label="Accept" name="accept1" optional="false">

       {Content}

    </do>

    鏈接(Anchor)
    archor是WML定義鏈接的基礎方式,與其他標簽結合可以滿足很多應用,anchor必須與go結合。

    相關屬性:

    title 鏈接的文本顯示內容。

    示例:

    <anchor title="Click"> click me <go href="#clickedMe"/> </anchor>

    簡化的鏈接形式(a)
    a是anchor的簡化形式,不需要Go語句配合。為了提高效率,推薦使用<a>。

    相關屬性:

    1. href 超級鏈接的目標Url

    示例:

    <a href="#clickedMe">click me</a>


    ?

    WML的事件

    內部事件(Onevent)
    相關屬性:

    type:內部事件的觸發條件,當前瀏覽器狀態滿足觸發條件時,瀏覽器就會觸發這個條件下設置的Task,內部事件總共有4種觸發條件。

      1 ontimer 滿足時鐘設置的條件時,該條件成立。關于時鐘設置問題,后面還有專門的說明。
       2 onenterbackward 通過Prev或其他外部命令返回到當前Card,該條件成立。
       3 onenterforward 當瀏覽器通過鏈接進入當前Card,該條件成立
       4 onpick 在使用Option控件列表的時候,任何點擊控件的行為都會觸發本事件,包括選擇和去掉選擇。

    示例:

    <?xml version="1.0"?>
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.com/DTD/wml_1.1.xml">
    <wml>

    <!-- this deck can't use in Ericsson r320sc ,because r320sc haven't accept button-->

    <card id="start">
    <do type="accept" label="next">
       <go href="#two"/>
    </do>
    <p>This is the first card.</p>
    </card>

    <card id="two">
    <do type="accept" label="next">
       <go href="#three"/>
    </do>
    <onevent type="onenterbackward">
       <go href="#temp"/>
    </onevent>
    <p>This is the second card.</p>
    </card>

    <card id="three">
    <do type="accept" label="back">
       <prev/>
    </do>
    <p>This is the thired card.</p>
    </card>

    <card id="temp">
    <do type="accept" label="start">
       <go href="#first"/>
    </do>
    <p>haha, you are lost!</p>
    </wml>


    WML文檔結構祥解

    1、聲明(Prologue)
    <?xml version="1.0"?>
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.com/DTD/wml_1.1.xml">

    2、元素(Element)
       WML首先定義一個Deck,然后在Deck內封裝信息和Card。

    3、文件頭(Head Element)
       頭信息包含與Deck有關的信息,包括meta數據和控制元素。

      3.1、訪問權限設置(Access)

      該元素用于設置有訪問當前Deck權限的列表。如果Deck內不包含Access Element信息,該Deck下的Access Element處于無效狀態,其他所有的Deck都可以訪問該Deck。

      相關屬性:

      domain:假如設置 <access domain="sina.com.cn"/> 那么 http://www.sina.com.cn/ 將有訪問權限, 而 http://www.sino.com.cn/ 和 http://www.sina.net.cn/ 就沒有.

      path:工作原理與Domain非常相似,例如設置<access path="/internal"/> 那么"/internal/wml" 將獲得訪問權限,而"/internal-wml"就沒有。

    示例:

      做如下設置 <access domain="sina.com.cn" path="/wap"/>

      那么以下幾個Url具有訪問權限:

      http://www.sina.com.cn/wap/goto.cgi
       http://www.sina.com.cn/wap/index.wml
       http://www.sina.com.cn/wap/cgi-bin/create_report.cgi?name=123&pwd=234

      以下的幾個Url沒有訪問權限:

      http://www.sina.com/wap/getuid.cgi
       http://www.sina.com.cn/internal/wap/getuid.cgi

    3.2、頭元素設置(Meta)

      <meta 屬性 content="值" scheme="格式" forua="true|false"/>和HTML中的類似,提供了該DECK的meta信息。

    例如:<meta http-equiv="Cache-Control" content="max-age=0" forua="true"/>

      content屬性是必選的,其內容根據屬性而定。scheme屬性目前尚不支持。forua為可選屬性,指定在該wml文件傳到客戶端之前,<meta>標簽是不是被中間代理刪除(因為傳輸的協議可能改變),默認值為false。

      目前支持的meta數據:

      <meta http-equiv="Cache-Control" content="max-age=0"/>指定DECK在手機內存緩存中的存儲時間段,默認的為30天(除非內存耗盡),在該期間,手機對于訪問過的DECK直接從緩存里調用。如果信息是對時間敏感的,可以用max-age指定DECK在緩存里的生存期,最小單位是秒,如果指定為0,則每次都需通過連接服務器來調用該DECK。

      <meta user-agent="vnd.up.markable" content="false"/>和<meta user-agent="vnd.up.bookmark" content="指定的URL"/>類似于普通瀏覽器的書簽功能。當用戶將一個CARD做了書簽后,手機瀏覽器首先用一個標記記錄該CARD,這個標記默認的是<card>標簽中的title屬性(以后會講到),然后當用戶選擇了該書簽以后,瀏覽器就會打開被記錄的URL。但是因為在默認的情況下,手機會記錄所有的DECK,所以,一般<meta>被用來使手機不要記錄當前的URL,即<meta user-agent="vnd.up.markable" content="false"/>。此外,如果要為書簽指定不同于當前DRECk的URL,用<meta user-agent="vnd.up.bookmark" content="指定的URL"/>。

    4、模板(Template)
       為了節省資源,可以把每個Card中都要用到的Task設置在模板中,供當前Deck中所有Card使用,加入個別Card不需要該模板內容,可以Override掉它(詳見任務屏蔽)。

    5、卡片(Card)
       適用事件

      以下事件適用于Card和Template,參見前面的相關說明。
       1. onenterbackward
       2. onenterforward
       3. ontimer

      卡片屬性(Card)

      id:同一Deck內Card的唯一標識,可以作為標簽被使用。(#nextcard).

      title:卡片標題。不同的瀏覽器處理標題處理title的原則不一樣,有的瀏覽器會顯示標題,如果當前卡片沒有設置標題,當前卡片的URL會被顯示在標題位置。有些瀏覽器為了節省顯示區域會忽略標題。

      newcontext:默認值為false,用來指示當跳轉到本CARD時,手機是不是要清除以前保留的信息,包括變量,堆棧里的歷史記錄,重新設置手機狀態等。

      ordered 布爾變量,聲明Card是否有序。通常可以用來開發自動播放的幻燈片效果。

    示例:

    <?xml version="1.0"?>
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
    <wml>

    <head>
       <access domain="sina.com.cn" path="/wap"/>
    </head>

    <template>
       <do type="accept" name="accept1" label="OK">
         <go href="#accept"/>
    </do>
    </template>

    <card id="start" title="Start Here">
    <p> Start Here. </p>
    </card>

    <card id="accept" title="Okay Card">
    <do type="accept" name="accept1" label="Okay">
       <go href="#accept2"/>
    <!-- override the same task in template-->
    </do>
    <p> Card Accept </p>
    </card>

    <card id="accept2" title="OK Card" >
    <do type="accept" >
       <go href="#start" />
    </do>
    <p> Card Accept2 </p>
    </card>

    </wml>



    Select List 控件

    對表單的控制能力可以證明一個HTML設計者是否夠專業,而且很多交互功能也必須依賴表單。WML沒有表單屬性,但是WML可以直接使用控件,同樣可以達到使用表單的效果。因此,使用控件的水平可以體現一個WML設計者的制作水平。

    WML控件有Select List和Input Box兩個系列,每個系列另外包含幾個子系列,基本可以滿足表單設計的需求。

    選擇列表控件(Select List)

    Select有兩對很重要也很容易混淆的屬性:name, value , iname , ivalue。這四個屬性的區別和用途不太容易描述清除,看了后面的例子會很容易理解。

    每個Select是一個或多個Option的集合,Option地結果返回給Select元素的name和iname。

    示例:

    <select name="name" iname="iname value="value" ivalue="ivalue">
    <option value="S">sina</option>
    <option value="Y">yahoo</option>
    </select>

    相關屬性:

    1. multiple 這個布爾變量的值決定是否允許多重選擇,值為True時Select控件允許復選,否則相反。

    2. name & Value 這一組變量的主要作用是獲取于該option的返回值,value提供name的缺省值。

    3. iname & ivalue 與上一組參數功能相似,不同的是ivalue返回有效Option的序列號。被選中的控件用它的序號表示,0代表沒有option被選中,假如第二個和第三個同時被選中就表示為 2;3

    4. title 作為標題參數提供給瀏覽器,但是不同的瀏覽器處理方式有所不同,有些瀏覽器直接顯示選項內容不顯示標題,有的瀏覽器顯示標題,按選擇鍵進入選擇界面。

    5. tabindex 提供給瀏覽器的控件序號參數。

    2、選項控件

    Option只有包含在Select內才有意義,無法單獨使用。

    相關屬性:

    1. value Option的返回值,假如當前Option被選擇,這個Value的值會被傳送到Select元素的Name變量。

    2. title 供瀏覽器顯示的選項標題。

    3. onpick 如果當前Option被點選,瀏覽器跳轉到指定的Url。

    示例1:

    <card>
    <p>Please choice your favourite Web.<br/>
    <select name="X">
    <option value="S">sina</option>
    <option value="Y">yahoo</option>
    </select>
    <p>
    </card>

    上例是一個基本的單選列表,選擇的結果被賦值給X。

    示例2:

    <card>
    <p>Please choice all your favourite Web.<br/>
    <select name="X" iname="I" ivalue="1;3" multiple="true">
    <option value="S">sina</option>
    <option value="Y">yahoo</option>
    <option value="N">netease</option>
    </select>
    <p>
    </card>

    上例是一個使用了iname和ivalue的多選列表,I被預置為 1;3 。假如用戶選擇了sina和yahoo,X被賦值為 S;Y,I被賦值為 1;2。假如用戶不做任何選擇,I等于1;3,X內容為空。

    示例3:

    <card>
    <p>Jump to your favourite Web.<br/>
    <select>
    <option onpick="http://wap.sina.com.cn">sina</option>
    <option onpick="http://wap.chnmobile.net">china mobile</option>
    </select>
    <p>
    </card>

    上例演示了Option的onpick功能,不管Option的狀態如何,只要它被點選,瀏覽器就會跳轉到指定的Url。

    示例四:

    <card>
    <p>Please choice your favourite Web.<br/>
    <select name="X">
    <option value="S">sina</option>
    <option value="Y">yahoo</option>
    <option value="S;Y">both</option>
    </select>
    <p>
    </card>

    上例演示了一個通過單選功能完成多選需求的示例。



    分組選擇控件(Optgroup)和復雜實例

    相關Option分組產生層級,對最終用戶來說可能沒有什么意義,但是對于制作者來說,Option分組可以提供很多方便。

    相關屬性:

    1. title 標題,通常這種標題無法被顯示

    示例:

    <card>
    <p> What OS You Use Now?
      <select name="OS">
       <optgroup title="microsoft">
        <option value="dos">dos</option>
        <option value="windows">windows</option>
       </optgroup>
       <optgroup title="others">
        <option value="unix">unix</option>
        <option value="linux">linux</option>
       </optgroup>
      </select>
    </p>
    </card>

    上例演示了一個基本的Optgroup元素的應用,由于Optgroup沒有變量參數,所以只能提供有限的應用。

    一個比較復雜的例子:

    <?xml version="1.0"?>
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
    <wml>

    <template>
       <do type="options" label="Back">
         <prev/>
       </do>
    </template>

    <card id="lists">
    <p>
    <select title="Pick Lists">
       <option onpick="#JY">Jin Yong</option>
       <option onpick="#GL">Gu Long</option>
    </select>
    </p>
    </card>

    <card id="JY">
    <onevent type="onenterbackward">
       <prev/>
    </onevent>
    <do type="accept">
       <go href="#display_fav"/>
    </do>
    <p> Pick your fav Book:
    <select name="fav" title="Stooges">
       <option value="Xiao">Xiao ao jiang hu</option>
       <option value="She">She diao ying xiong</option>
       <option value="Lu">Lu ding ji</option>
       <option value="Shen">Shen diao xia lv</option>
    </select>
    </p>
    </card>

    <card id="GL">
    <onevent type="onenterbackward">
       <prev/>
    </onevent>
    <do type="accept">
       <go href="#display_fav"/>
    </do>
    <p> Pick your fav Book.
    <select multiple="true" title="Gu Long" name="fav" >
       <option value="Gu">Gu xing zhuan</option>
       <option value="Da">Da di fei ying</option>
       <option value="Tian">Tian ya ming yue dao</option>
       <option value="feng">Lu xiao feng</option>
    </select>
    </p>
    </card>

    <card id="display_fav">
    <p> Your fav was $fav. </p>
    </card>
    </wml>

    posted on 2006-03-17 10:59 kelven 閱讀(473) 評論(0)  編輯  收藏 所屬分類: WML
    主站蜘蛛池模板: 亚洲国产香蕉人人爽成AV片久久 | 四虎影院永久免费观看| 麻豆视频免费观看| 最近免费中文字幕大全高清大全1| 大地资源在线资源免费观看 | 亚洲乱码在线观看| 亚洲一本之道高清乱码| 亚洲免费视频观看| 亚洲天堂免费在线| 亚洲精品理论电影在线观看| 亚洲国产精品无码第一区二区三区 | 99xxoo视频在线永久免费观看| 无码人妻久久一区二区三区免费 | 亚洲性色精品一区二区在线| 亚洲乱码一二三四区乱码| 亚洲黄色激情视频| 亚洲精品动漫免费二区| 美女免费视频一区二区三区| 日韩在线观看免费| 99精品免费视品| 老汉精品免费AV在线播放| 日韩免费一区二区三区在线播放| 久久久久久国产精品免费免费| 在线免费观看一区二区三区| 国产又黄又爽又刺激的免费网址| 亚洲国产精品国产自在在线| 亚洲日本一区二区三区在线| 亚洲精品乱码久久久久久下载 | 亚洲精品国产精品乱码在线观看| 亚洲成AV人片在线观看WWW| 久久亚洲AV成人无码| 亚洲午夜精品久久久久久app| 国产综合激情在线亚洲第一页| 国产精品1024在线永久免费| 国产精成人品日日拍夜夜免费| 希望影院高清免费观看视频| 国产性生交xxxxx免费| 亚洲开心婷婷中文字幕| 亚洲性一级理论片在线观看| 亚洲GV天堂GV无码男同| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 |