WML - 任務



WML 任務是一個元素,它指定瀏覽器要執行的操作,而不是要顯示的內容。例如,更改到新卡片的操作由 <go> 任務元素表示,返回到之前訪問的卡片的操作由 <prev> 任務元素表示。任務元素封裝了執行操作所需的所有資訊。

WML 提供以下四個元素來處理四個 WML 任務,稱為 go 任務、pre 任務、refresh 任務和 noop 任務。

<go> 任務

顧名思義,<go> 任務表示轉到新卡片的操作。

<go> 元素支援以下屬性

屬性描述
hrefURL給出新卡片的 URL。相對 URL 相對於當前卡片解析
method
  • get
  • post
指定用於獲取卡組的方法。這必須是 get 或 post 中的一個值,分別對應於 HTTP 的 GET 和 POST 方法。

使用method="get"時,資料作為請求傳送,並在 url 後附加 ?data。此方法有一個缺點,即它只能用於有限數量的資料,並且如果您傳送敏感資訊,它將顯示在螢幕上並儲存在 Web 伺服器的日誌中。因此,如果您正在傳送密碼等,請不要使用此方法。

使用method="post"時,資料作為請求傳送,資料傳送在請求正文中。此方法沒有限制,敏感資訊在 URL 中不可見

sendreferer
  • true
  • false
如果設定為 true,瀏覽器會將當前卡組的 URL 與請求一起傳送。如果可能,此 URL 將作為相對 URL 傳送。這樣做的目的是允許伺服器根據哪些卡組連結到它們來對卡組執行簡單的訪問控制。例如,使用 HTTP,此屬性在 HTTP Referer 標頭中傳送。
accept-charsetcharset_list指定一個用逗號或空格分隔的字元集列表,這些字元集可以對在 POST 請求中傳送到伺服器的資料進行編碼。預設值為“unknown”。
classclass 資料為元素設定類名。
id元素 ID元素的唯一 ID。

以下示例顯示了 <go> 元素的使用。

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

<wml>

<card title="GO Element">
<p>
   <anchor>
       Chapter 2 : <go href="chapter2.wml"/>
   </anchor>
</p>
</card>
</wml>

另一個示例顯示如何使用 Get 方法上傳資料

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

<wml>

<card title="GO Element">
<p>
   <anchor>
      Using Get Method 
      <go href="chapter2.wml?x=17&y=42" method="get"/>
   </anchor>
</p>
</card>
</wml>

另一個示例顯示如何使用 <setvar> 元素上傳資料。

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

<wml>

<card title="GO Element">
<p>
   <anchor>
      Using setvar:
	  <go href="chapter2.wml"> 
	      <setvar name="x" value="17"/> 
  	      <setvar name="y" value="42"/> 
	  </go>
   </anchor>
</p>
</card>
</wml>

另一個示例顯示如何使用 <postfiled> 元素上傳資料

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

<wml>

<card title="GO Element">
<p>
   <anchor>
      Using setvar:
	  <go href="chapter2.wml" method="get"> 
              <postfield name="x" value="17"/>
              <postfield name="y" value="42"/>
	  </go>
   </anchor>
</p>
</card>
</wml>

<prev> 任務

<prev> 任務表示返回到歷史堆疊中之前訪問的卡片的操作。執行此操作時,歷史堆疊中的頂部條目將被刪除,並且該卡片將在 <prev> 任務中的任何 <setvar> 變數賦值生效後再次顯示。

如果不存在先前的 URL,則指定 <prev> 不會產生任何影響。

<prev> 元素支援以下屬性

屬性描述
classclass 資料為元素設定類名。
id元素 ID元素的唯一 ID。

以下示例顯示了 <prev> 元素的使用。

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

<wml>

<card title="Prev Element">
<p>
   <anchor>
        Previous Page :<prev/>
   </anchor>
</p>
</card>
</wml>

在 <prev> 任務中包含變數的一個有用情況是登入頁面,該頁面提示輸入使用者名稱和密碼。在某些情況下,您可能希望在返回到登入卡時清除密碼欄位,強制使用者重新輸入。這可以透過以下結構完成

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

<wml>

<card title="Prev Element">
<p>
   <anchor>
        <prev>
           <setvar name="password" value=""/>
        </prev>
   </anchor>
</p>
</card>
</wml>

<refresh> 任務

<refresh> 任務是最簡單的實際執行某些操作的任務。它的作用只是執行其 <setvar> 元素指定的變數賦值,然後使用新值重新顯示當前卡片。<go> 和 <prev> 任務在顯示新卡片之前執行相同的操作。

<refresh> 任務最常用於對卡片執行某種“重置”操作。

<refresh> 元素支援以下屬性

屬性描述
classclass 資料為元素設定類名。
id元素 ID元素的唯一 ID。

以下示例顯示了 <refresh> 元素的使用。

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

<wml>

<card title="Referesh Element">
<p>
   <anchor>
         Refresh this page:
          <go href="test.wml"/>
          <refresh>
            <setvar name="x" value="100"/>
          </refresh>
   </anchor>
</p>
</card>
</wml>

<noop> 任務

<noop> 任務的目的是什麼也不做(無操作)。

此任務的唯一實際用途與模板相關聯

<noop> 元素支援以下屬性

屬性描述
classclass 資料為元素設定類名。
id元素 ID元素的唯一 ID。

以下示例顯示了 <noop> 元素的使用。

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

<wml>

<card title="Noop Element">
<p>
  <do type="prev" label="Back">
      <noop/>
  </do>
</p>
</card>
</wml>
廣告

© . All rights reserved.