非常不錯的WAP常見問題問答大全(二)第2/3頁
更新時間:2007年03月14日 00:00:00 作者:
12. 什么是一個“deck”?
一個WML文檔有許多卡片(cards)組成。一個卡片是一系列完整的WML代碼。這些卡片被稱為一個“deck”。卡片和“deck”的概念就有點像HTML中的錨標記<a name="#achor1">和一個HTML頁面。也就是說卡片是“deck”中的一個組成部分。也可以把“deck”稱為WML中的頁面。它們之間的關系可以比做一副撲克牌。整副撲克牌就是deck,而每一張牌就是card。
13. 什么是WML的“deck”?
WML的“deck”或者WML文件是指decks。每個deck包含一個或者更多的card。每個deck都以<wml>開始和結束。并且每個card都以<card>開頭或者結束。
當WML微型瀏覽器處理WML文件或者deck的時候,它閱讀整個deck,并且在deck內(nèi)的各個card之間進行導航。當裝入deck的時候,deck里面所有的card都已經(jīng)裝入到內(nèi)存中,直到瀏覽器裝入另外的deck。
如果熟悉 HTML中的<a name>標簽。WML的<card>標簽將是非常類似的:
<wml>
<card id="start_menu">
...some code...
</card>
<card id="purchase">
...some more code...
</card>
</wml>
deck和card可以按照這種方式調(diào)用:[deckname][#cardname]。如果deckname省略,那么瀏覽器就會查找當前內(nèi)存里的cardname名字的card。如果使用了deckname和#cardname,那么瀏覽器將裝入deckname的整個deck,然后跳入到#cardname。這個和HTML的工作方式很像。
14. WML是大小寫敏感的嗎?
是的!要注意WAP 1.1使用小寫的標簽。
15. 如何顯示一個美元符號?
使用兩個在一起的美元符號來表示,即“$$”。
16. 想顯示價格的格式該怎么辦?
“$”是一個特殊的字符,使用“$$”來顯示一個“$”。
例如:
<p>
The price is $$11.20
</p>
17. fieldset標簽有什么作用?
編寫WML頁面的時候要考慮到設備的屏幕很小。如果試圖想把一個大的form在一個屏幕里面顯示,就要指定那些標簽保持在一個屏幕中。那么fieldset標簽將這些標簽捆綁在一個屏幕上。
18. postfield標簽有什么作用?
postfield標簽使允許提交參數(shù)到服務器端。注意有些早期的模擬器還不支持該標簽,這將給開發(fā)工作帶來麻煩!
19. WML有類似HTML的<mailto>標簽嗎?
沒有。但是你可以使用WML表單和服務端腳本來得到同樣的效果。
20. 無法讓<input/>格式正常工作是怎么回事?
至少Nokia WML Reference沒有講清楚有關<input/>標簽的用法。format參數(shù)控制著用戶輸入數(shù)據(jù)的類型和長度。
注意到不是所有的WAP 1.1瀏覽器都接受所有的格式化代碼。例如:Nokia 7110就支持得不是很好。Mitsubishi Trium在處理“*f”代碼的時候有點問題,“*”必須為1或者更大。專門的格式化代碼如下:
A
從A到Z的任何大寫字母,沒有數(shù)字或其他字符。
a
從a到z的任何小寫字母,沒有數(shù)字和其他字符。
任何0到9的數(shù)字。
X
從A到Z從0到9的任何字符。
x
從a到z從0到9的任何字符。
M
任何字符,輸入默認從大寫開始。
m
任何字符,輸入默認從小寫開始。
*f
(星號)意味著任何數(shù)字(包括0),f是格式的代碼。
nf
意味著恰好要輸入的字符個數(shù)。n從1到9。f是格式代碼。
\
是轉(zhuǎn)義輸出字符。
格式化字符可以組合使用來表示一種特定的格式輸入。但是強制一定的輸入應當避免在用戶出錯的時候沒有提示信息。如果輸入是不正確的,該填寫的區(qū)域一般仍保持空白,直到讓用戶知道應該輸入什么。如果只想輸入數(shù)字,使用“*N”那么將直接轉(zhuǎn)跳到數(shù)字輸入模式。如果只想輸入大寫的字符,使用“*M”轉(zhuǎn)跳到大寫輸入模式?,F(xiàn)舉一些例子:
“N” 只接受一個數(shù)字字符。
“*N” 接受任何數(shù)字字符。
“NN” 只接受2個數(shù)字字符,不多不少。
“ANN” 接受一個大寫字符(沒有數(shù)字),后面跟著兩個數(shù)字,不多不少。
“X*N” 表示可以接受一個字符(沒有數(shù)字)后面跟著任意多的數(shù)字字符。
“NNN\-NNN\-NNNN”表示接受美國的電話號碼格式,例如:“123-456-1234”。
“2N\:2N\:2N” 表示接受時間格式,例如:“12:02:34”。
“NNNNNNNNN” 表示接受9個數(shù)字字符。
“9N” 同樣表示接受9個數(shù)字字符。
maxlength參數(shù)控制著輸入字符的總個數(shù)。
21. 如何防止一個空的field?
在大多數(shù)情況下需要知道用戶確實是輸入了一些內(nèi)容在field中,不能讓這些內(nèi)容為空。這個可以通過在服務端的檢測來完成,也可以通過WML來完成。
在WML中,這個檢查可以通過合適的格式化代碼來完成,或者使用一個在input標簽中叫做emptyok="false" 的參數(shù)來實現(xiàn)(只有當必須要求用戶輸入的時候才使用)。如果使用了value="something" 或者value="" 用戶仍然可以發(fā)送空的fields。
以下的行將接收任何值到username field, 甚至用戶將整個field清空。另外field中沒有任何東西,也能夠提交form。
<input name="username" type="text" value="things" format="*M"/>
除了用戶將整個field清空,以下的行將接收任何值到username field。如果field是空的,他將不能提交form,。
<input name="username" type="text" value="things" format="M*m"/>
以上的應用是針對大多數(shù)的瀏覽器。在Nokia 7110 ,emptyok參數(shù)可以有同樣的效果:
<input name="username" type="text" value="things" format="*M" emptyok="false"/>
22. 使用option標簽的時候,無法一屏顯示完該怎么辦?
許多WAP電話的顯示屏幕只能顯示三到四個選項。按以下的方法分割option字段就可以輸入更多的選項。
<select title="longselectlist">
<optgroup title="option1">
<option>option1-1</option>
<option>option1-2</option>
<option>option1-3</option>
</optgroup>
<optgroup title="option2">
<option>option2-1</option>
<option>option2-2</option>
<option>option2-3</option>
</optgroup>
<optgroup title="option3">
<option>option3-1</option>
<option>option3-2</option>
<option>option3-3</option>
</optgroup>
</select>
23. 想有一個永久的BACK在屏幕的右下方。有些好像是自動的,若沒有,該怎么做?
可以加入以下代碼。
<do type="prev" label="Back">
</prev>
</do>
更好的是使用template。
……
<template>
<do type="prev" label="Back" name="back">
</prev>
</do>
</template>
……
24. WAP支持列表嗎?
是的,WAP1.1支持列表和相關的標記。
25. 可以在WML中使用表單嗎?
可以。但是Nokia 7110在顯示表單的時候有些問題。
26. WML支持什么樣的表單提交方式?
WML支持GET和POST方式。但是Nokia 7110在處理GET方式的時候有些問題。
27. WML中如何增加參數(shù)到URL字符串中?
和HTML的工作方式很像,如下所示:
……
www.someserver.com/someurl?parameter1=value1¶meter2=value2
……
唯一的不同是將“&”變成“&”。
28. 如何從WML向ASP傳送數(shù)據(jù)?
假設有一個ASP叫做“myasp.asp”,并且有一個WML變量叫做 “wmlvar”。當發(fā)出請求“myasp.asp?wmlvar=something”,可以使用下面的方法得到變量的內(nèi)容。
dim aspvar
aspvar = Request.QueryString("wmlvar")
ASP變量“aspvar”將包含字符串“something”。當然ASP變量也可以與WML變量同名。
29. 如何讓WML頁面自己更新?
有過Web經(jīng)驗的人喜歡使用:
<meta http-equiv="refresh" content="1;http://somewhere.com/">
來強制瀏覽器自動更新。
雖然在WAP中也支持一些META標簽,一個更好的辦法是使用<ontimer>標簽。
以下的代碼顯示了如何自動轉(zhuǎn)跳到另外一個卡片:nextdeck.wml。
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="splashscreen" ontimer="nextcard.wml">
<timer value="40"/>
<p>Please wait for the timer to run out...</p>
</card>
</wml>
下面的代碼將強制瀏覽器在一段時間后重新裝入同一個卡片。這個頁面叫做loop.wml。
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="loop" ontimer="loop.wml">
<timer value="40"/>
<p>This text will be shown over and over again...</p>
</card>
</wml>
注意必須避免瀏覽器可能要使用的cache機制。
相關文章
WML開發(fā)教程之 WAP網(wǎng)站服務器配置方法
WML開發(fā)教程之 WAP網(wǎng)站服務器配置方法...2007-03-03