锚和任务
连接是 HTML 页面里最基本的功能, 在 WML 里也一样用 a href="url" title="label" 和 /a来包括用来建立连接的文字,必选属性href指定了要打开的URL,可选的title属性给该连接取个标记名字,这个名字将作为软按钮之一的ACCEPT键(详见以前的HDML入门文章)的标记显示在屏幕的软按钮区,所以通常可以将属性作为提示文字是用。
然而,以上的连接在WML里只是任务的一种情况,为了能够使用其它任务,所以引进了新的标签anchor title="label"任务标签 文本/anchor,a其实是当任务标签为go/时的简单表示方式。
test3.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
p
anchor title="Link1"go href="test1.wml"/News/anchorbr/
a title="Link2" href="test2.wml"Sports/a
/p
/card
/wml
WML里的任务标签有以下几种,除了用于anchor,还可以用在事件中:
1)go用来指示浏览器显示指定的URL,包括DECK的第一个CARD或者指定的CARD。语法如下:
go href="url" sendreferer="false|true" method="get|post" accept-charset="charset"
postfield name="name" value="value"/
setvar name="name" value="value"/
/go
其中href属性为必选,其他为可选。sendreferer属性表示是否传递调用href所指定的URL的页面的URL,也就是当前页的URL,即 HTTP 头中的HTTP_REFERER,默认值为false,可选值为true。method和HTML中的表单FORM的method属性一样,指定表单是以get的方式还是post的方式递交,以便cgi处理,默认的值为get,但如果未指定method但go/go间存在postfield,手机自动以post方式传递。accept-charset 属性可覆盖在HTTP头里指定的字符集,可以写多个字符集,如accept-charset="UTF-8,US-ASCII, ISO-8859-1"。
postfield name="name" value="value"/可以看作是HTML表单FORM中的INPUT TYPE="HIDDEN" NAME="变量名" VALUE="值",通过它可以向指定的URL传递以“变量名/值”形式的数据。name和value属性都是必选的。注意只有这里的变量是用来递交给CGI程序的。
除了postfield,还可以在go和/go间加入一句或者多句setvar name="name" value="value"/,该语句的意思是,当触发某一事件时,给变量赋值。
要注意的是,当go和/go之间没有任何语句时,要用go/的形式,这点比较特别,比如anchor title="Link1"go href="test.wml"/News/anchor。
2)prev用来将当前页面的URL压入URL历史堆栈,并打开此前的URL,若该URL不存在,则prev无效。语法类似go:prevsetvar name="name" value="value"//prev,prev和/prev之间可加入一句或多句setvar name="name" value="value"/,若不加,则必须变成prev/的形式。
3)refresh用来刷新当前的页面,从而使得页面内的变量刷新,语法为refreshsetvar name="name" value="value"//refresh。
4)noop,表示什么也不做,该标签不能用在anchor中,一般用在覆盖DECK级的do(以后会说明)