WAP中的ASP技術(二)
作者:Eve Cole
更新時間:2009-05-30 19:54:47
<<<上一頁
WML基本的語言
"p" element
作用與HTML一樣,只是如果你想顯示文字這個就是必須的。
"do" element
實際上每個WAP應用程式必須支援導航條。 do標籤最主要的type屬性的值就是accept,這個表示當你按下軟鍵一個新的選項會被加到列表中。 label屬性指定顯示的文字。另外是一些選項:
go - 導航到另外一個卡片或板塊。他需要href 屬性。
prev - 導航到上一個卡片中去
refresh - 刷新顯示。
noop - 無
Anchor
作用和HTML中的<A>一樣的。在WML中Anchor連結的作用和do差不多,唯一的不同就是Anchor不以選項的形式顯示。
<anchor>
Go to card 2
<go href="#card2"/>
</anchor>
變數
WML結合變數的辦法有一點不同於HTML和Javascript。 WML的變數不僅可以被WMLScript來調用,還可以透過card直接用於WML文件。換句話說就是變數不只可以由使用者直接輸入,同時也可以由setvar元素來設定。當然變數能夠被腳本來操作,但這個不是必須的!這個觀點必須被更進一步的強調和闡明。例如,你可能需要一個card來獲得用戶的名字,下一個card就顯示"Hello,飛刀",我們就可以這樣"Hello,$(firstname)",有點像PHP,是不是,這個在傳統的HTML中是不可能辦到的!
既然變數的值能夠在各個card之間保存,那麼它們就經常被用於保存狀態訊息,支援一些複雜的互動式WAP服務。這種方法的一個問題就是當整個deck必須重新引用時,這些狀態可能與使用者的瀏覽無法保持同步。所以,一些事件和屬性就被用來捕捉這些事件(onenterofrward 和onenterbackward).刷新則根據一些變數的值被用來做更新card.
使用者輸入
當然,為了讓你的頁面變得更加的強大,變數就需要儲存(接收)使用者的標準輸入。這一切透過一些類似HTML的元素來完成.
input - 很像HTML,使用者透過手機的鍵盤來輸入。你能夠想像,這種輸入就不像我們使用PC上的鍵盤一樣實用,所以我們應該盡量簡化這種輸入方式,有可能盡量使用select元素來供使用者選擇。 name屬性是這個變數的名字,預設值和大小的屬性顯然也是必須的。 format為輸入入口指定了一個輸入面具。其它的請查看其它資料,在這我就不一一講述了!
select/option - 使用者選項的清單。同樣也很像HTML:
<select name='movie'>
<option value='1'>Eyes Wide Shut</option>
<option value='2'>Notting Hill</option>
:
<option value='13'>Buena Vista Social Club</option>
</select>
multiple=true屬性告訴使用者代理程式(瀏覽器)多項選擇是被允許的. onpick事件發生於一個選項被選擇/被取消時.
Postfield - 很像html中的hidden屬性,它將不會顯示在螢幕中。它能同時將name與value傳送給伺服器.
Fieldset - 包含一大堆的資訊強迫手機在一個螢幕中顯示,當然這得看手機的能力了
其它的元素
img元素也同樣被支持,但是你得使用一種特殊的圖片格式,名叫WBMP.因為WAP手機擁有有限的內存和儲存空間。這個新的格式能夠讓WAP裝置快速的理解與產生圖片。 Wireless bitmaps的生成,可以透過下載一個Photoshop和Paint Shop Pro的外掛就可以搞定了。最後大家要記得在你的伺服器上設定正確的MIME類型,下面我列出了所有與WAP相關的MIME:
wml text/vnd.wap.wml
wmlc application/vnd.wap.wmlc
wmlsc application/vnd.wap.wmlscriptc
wmlscript text/vnd.wap.wmlscript
ws text/vnd.wap.wmlscript
wsc application/vnd.wap.wmlscriptc
wmls text/vnd.wap.wmlscript
wbmp image/vnd.wap.wbmp
一些傳統的強調元素也被支持,如:em,i,b,small,strong等等,用法也和HTML一樣。 BR也同樣被支持,不過寫法有點不同,畢竟是XML嘛,要寫成這樣<br />
最後我們來看看time物件和ontimer事件,time物件保存著至card被呼叫至今的時間,如果我們定了ontimer事件,那麼ontimer事件就會被激發.
還有很多我也懶得寫了,希望對你們建設WML網頁沒有什麼影響.
WAP 的開發問題
很不幸的是,事情並不是我們想像的那麼簡單,不同的WAP手機總是有一些小的不同的地方,就像M$的Javascript與NS的不同一樣。例如,NoKia 7710這樣第一部在挪威出售的WAP手機,就無法正確的支援POST方法。
另一個限制就是deck的大小的問題。有些手機(Nokia 7110)就是不支援超過1.4K的WML文檔,WAP網關能夠將你的WML文檔壓縮成更小的二進位格式,但是你也不要希望奇蹟出現。這時不僅Nokia 7110支持的東東不能顯示,一些強調標格也被忽略了,另外
fieldset標格也很輕鬆地被它忽略了,是不是很煩! ?嘿嘿,當你在模擬器上做出很cool的頁面,然後再到手機上一看,嘿嘿,砸了手機是你的第一選擇.
雖然Nokia Toolkit 1.2模擬器上支援cookies,但是第一批WAP手機就是不支持,這就意味著你將和你的ASP中的Session,說再見,至少也是很長的一段時間
下一節,我們將真正做一個WML與ASP結合的網站.