一些 WML 1.x中的特征在XHTML MP中不再使用,在这节你可以学到WML 1.x和XHTML MP的区别。这节对以前是用WML 1.x开发,现在开始采用XHTML MP开发的人比较有用,或者对从WML 1.x的移动互相网应用程序提升到XHTML MP提供参考。
对于一些失去的WML的功能,在XHTML MP中有类似的实现方法。需要指出的是,WAP2.0是向后兼容WML1.x的,就是说支持WAP 2.0的设备,也可以正常查看WML 1.x的文档。如果有在 WML中有的功能,但在XHTML MP中没有的,而你又要用到的,那么你可以用WML 1.X来开发,因为支持WAP2.0的设备同样可以正常显示WML 1.x开发的文档。
以下是在XHTML MP中不再有的WML功能
- XHTML MP不支持decks 和cards
- XHTML MP不支持timers
- XHTML MP不支持事件Events
- XHTML MP不支持变量
- XHTML MP不支持客户端脚本
- XHTML MP不支持可编程序软键(Programmable SoftKeys)
- XHTML MP不支持<u>标签
- XHTML MP不支持Input框的format属性
- XHTML MP 不支持锚点传输数据
XHTML MP不支持decks和cards
WML中的<deck>和<card>标签在XHTML MP中不再存在。在WML中,一个文件可以有一个或多个cards,所有的cards组合成deck,所有deck中的cards会同一时间一起下载到移动设备中,WAP浏览器一次显示一个card,可以使用锚链接,链接到其他的card。通过使用cards和decks,可以减少服务器的往返次数,可以显著的提高性能,因为无线设备到服务器的每个请求的延迟是比较高的。
在XHTML MP中要实现类似的功能,您可以使用多重消息(多个文档放到一个HTTP响应中),另外一种方法是使用锚点的方法。(目标锚点放到一个页面的不同地方)
XHTML MP不支持timers
在WML中创建一个定时器,使用<timer>标签和onTimer事件。在XHTML MP中不支持<timer>标签和onTimer事件。
在XHTML MP中要实现类似的功能,可以尝试使用HTTP refresh,像这样:
1
2
3
4
5
6
7
|
在上面这个XHTML MP的例子,<meta>告诉WAP浏览器10秒后转到URL地址http://www.hahoo.cn/,注意的是一个WML计时器在向前访问card时被触发开始,而XHTML MP页,被打开时就开始触发。
在XHTML MP中事件是不可用的,WML支持4种事件:ontimer, onenterbackward, onenterforward 和onpick。正如上一节中所讨论的,HTTP refresh可以模拟onTimer事件。对于其他事件,在XHTML MP中没有替代的方法,如果这些事件在你的移动设备应用程序开发中必须使用,那么请考虑使用WML 1.x而不是XHTML MP。
在WML中,你可以声明变量,并给它分配一个值。WML变量具有全局性,这意味着您可以在任何deck和card中使用。 WML变量的一个常见的用途是存储用户输入的一些数据,这样用户就不用每次都反复的输入这些数据了。
在XHTML MP中,不能使用变量,不过解决方法可以将这些放到服务器端处理。例如,如果你要在XHTML MP的页面中存储一些用户的数据,用来在其他页面中使用,那么把数据发送并存储在服务器端,当其他页面使用到时,可以从服务器端发送到无线设备中。
XHTML MP不支持客户端脚本
在WML中,您可以使用客户端脚本语言WMLScript,这是类似于JavaScript。WML Script的比较常用的是验证用户输入的数据。
Xhtml MP中不再支持客户端脚本,解决方法是把这些放到服务器端处理。例如,要验证用户通过无线设备输入的数据,数据会发送到服务器端进行处理,如果用户输入的数据格式不正确,超过某个范围或者忘记输入了某些字段,服务器端可以引导用户到另外一个XHTML MP页面进行提示。
未来,移动设备将支持一种客户端脚本语言,叫ECMAScript Mobile Profile (ESMP),它可以用到XHTML MP中,它支持WML Script的功能。
可编程序软键(Programmable SoftKeys)是WML的一个很大的特点。<do>标签常用来编写softkey。用户可以方便地通过点击一个手机左软键或右软键选择常用选项。
这在XHTML MP中不能使用,可以使用accesskey属性来解决,accesskey属性用来指定一个键盘快捷键。锚链接和提交按钮支持accesskey属性。例如:
1
2
3
|
< a accesskey = "1" href = "part1.xhtml" >XHTML MP Tutorial Part 1</ a >< br />
< a accesskey = "2" href = "part2.xhtml" >XHTML MP Tutorial Part 2</ a >< br />
< a accesskey = "3" href = "part3.xhtml" >XHTML MP Tutorial Part 3</ a >
|
如果用户按下“1”键,WAP浏览器将直接进入“part1.xhtml”。通过accesskey属性,要触发一个动作,在XHTML MP页中只需一个点击。这类似使用SoftKeys。
WAP CSS中的 -wap-accesskey,可以用来代替accesskey属性
一些Nokia的WAP浏览器,所有的锚链接和提交按钮,有accesskey属性指定键盘快捷,会自动包含在“选项”菜单中。用户可以通过点左键来调出选项菜单。在选项菜单中的锚链接的标签名称是在<a></ a>标签内的文本。对于图像链接和提交按钮,选项菜单中的名称是<img>的alt属性值和<input>标记的value属性值。例如:
1
2
3
4
5
6
7
8
9
10
|
< a accesskey = "1" href = "part1.xhtml" >XHTML MP Tutorial Part 1</ a >< br />
< a accesskey = "2" href = "part2.xhtml" >< img src = "icon.gif" height = "40" width = "40" alt = "XHTML MP Tutorial Part 2" /></ a >< br />
< form action = "xhtml_mp_tutorial_proc.asp" method = "get" >
< p >
Which part of our XHTML MP tutorial do you like most?< br />
< input type = "text" name = "tutorial_part" title = "Edit" />< br />
< input accesskey = "3" type = "submit" value = "Submit Form" />
</ p >
</ form >
|
在上面这个例子中,"XHTML MP Tutorial Part 1","XHTML MP Tutorial Part 2","Submit Form"将会成为选项菜单的标签文本,如果文字太长,它将会自动被截断。
注意,此功能在非Nokia手机中不支持。
在WML中,<u>标签可以用来给文本加下划线。
在XHTML MP中不再支持<u>标签,要给文字加下划线,可以通过WAP CSS的text-decoration属性来解决。例如,如果要给所有的H1增加下划线,你可以按照下面的写法:
1
2
3
|
h 1 {
text-decoration : underline
}
|
在WML中,可以对<input>标签设置用户可以输入的数据类型和可输入的字符数。
在XHTML MP中,<input>不支持format属性,另外的解决方法是通过WAP CSS的 -wap-input-format来设置。-wap-input-format可以设置输入的格式,这根format属性很像。例如,要限制所有输入字段只接受5个数字字符,那么在XHTML MP页面的WAP CSS样式表中通过如下代码声明:
1
2
3
|
input {
-wap-input-format: "5N"
}
|
在WML中,通过锚链接将数据发送到服务器端,像这样:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
...
< p >
What's your name?
< input name = "name" />< br />
Which part of our XHTML MP tutorial do you like most?
< input name = "tutorial_part" />< br />
< anchor >
< go method = "get" href = "xhtml_mp_tutorial_proc.asp" >
< postfield name = "name" value = "$(name)" />
< postfield name = "tutorial_part" value = "$(tutorial_part)" />
</ go >
Send Data
</ anchor >
</ p >
...
|
Sony Ericsson T610 |
Nokia Mobile Browser 4.0 |
---|
XHTML MP不支持锚链接发送数据,用提交按钮来代替,下面的XHTML MP代码跟上面的WML代码做同样的事情。
1
2
3
4
5
6
7
8
9
10
11
|
...
< form action = "xhtml_mp_tutorial_proc.asp" method = "get" >
< p >
What's your name?< br />
< input name = "name" />< br />
Which part of our XHTML MP tutorial do you like most?< br />
< input name = "tutorial_part" />< br />
< input type = "submit" value = "Send Data" />
</ p >
</ form >
...
|
Sony Ericsson T610 |
Nokia Mobile Browser 4.0 |
---|