WAP中的ASP技術
WML基本的語言
"p" element
作用與HTML一樣,只是如果你想顯示文字這個就是必須的。
"do" element
實際上每個WAP應用必須支援導航條。do標籤最主要的type屬性的值就是accept,這個意味著當你按下軟鍵一個新的選項會被加到列表中來。label屬性指定顯示的文字。另外是一些選項:
go - 導航到另外一個卡片或板塊中去。他需要href 屬性。
prev - 導航到上一個卡片中去
refresh - 重新整理顯示。
noop - 無
Anchor
作用和HTML中的一樣的。在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嘛,要寫成這樣
最後我們來看看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相結合的網站.