WML学习之四 锚和任务
锚和任务
连接是 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/anchor>br/>
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>:prev>setvar name="name" value="value"/>/prev>,prev>和/prev>之间可加入一句或多句setvar name="name" value="value"/>,若不加,则必须变成prev/>的形式。
3)refresh>用来刷新当前的页面,从而使得页面内的变量刷新,语法为refresh>setvar name="name" value="value"/>/refresh>。
4)noop>,表示什么也不做,该标签不能用在anchor>中,一般用在覆盖DECK级的do>(以后会说明)