« 让FLASH直接显示 避免 点击激活此控件BUTTON 元素 | button 对象 »

wap网站开发 WML教程 关于任务与导航

任务与导航-赋值与数据交换
这一部分简单讲解WML的变量赋值和数据提交方法,在后面的章节中有专门讲解。

变量赋值(Setvar)
  Setvar给浏览器的当前页面内变量赋值,该变量可以在当前Dock中的任意Card中调用。

  相关属性:

  1. name 变量名,作为访问变量的标识

    示例:<setvar name=$bogus value=$bear>

  2. value变量的值

数据交换(Postfield)
  Postfield通过URL申请与CGI交换数据。

  相关属性:

  name & value 交换参数用的变量的名字和值。

  示例:<postfield name=$bogus value=$bear>

一个综合应用的例子

示例:

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.com/DTD/wml_1.1.xml">
<wml>

<card id="Start" title="Sina WAP">
<do type="accept">
  <setvar name="MyCGI" value="/cgi-bin/count.pl">
  <go href="$MyCGI" method="post">
    <postfield name="one" value="one one"/>
    <postfield name="two" value="two two"/>
  </go>
 </do>
<p>Hello World!</p>
</card>
</wml>

上例相当于产生一个count.pl?one="one one"&two="two two"的Post申请。

跳转和传递参数
go的基本属性和应用
实现Card之间跳转的一个基本方法是go,go和do、anchor等标签的结合是WML高级应用的一个基础。

  相关属性:

  href:声明链接的URL

  sendreferer:表示是否传递调用href所指定的URL的页面的URL,也就是当前页的URL,即HTTP头中的HTTP_REFERER,默认值为false,可选值为true

  method:WML的method与HTTP提交表单的方法类似,同样有Post和Get两种,缺省参数为Get。

  Post与Get的不同:Post在发送前要进行编码处理,然后分组发送,发送过程相对安全,适合大数据量的处理;而Get方法不进行任何处理,一次性发出,适合小数据量交换。除非你肯定你提交的数据可以一次性提交,否则请尽量用Post方法。

  accept-charset:定义浏览器与服务器之间收发信息的字符集类型,例如:accept-charset="UTF-8,US-ASCII,ISO-8859-1"。

示例:

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.com/DTD/wml_1.1.xml">
<wml>

<card id="Start">
  <do type="accept" label="next">
    <go href="#nextCard"/>
  </do>
<p>This is the First Card!</p>
</card>

<card id="nextCard">
  <do type="prev" label="before">
    <prev/>
  </do>
<p>This is the last card!</p>
</card>
</wml>

Go结合Postfield交换参数
标签Go可以包含一个或多个Postfield标签,用这些标签携带参数与服务器进行数据交换。

示例1:产生一个"quote.pl?stock=00001"Get申请

<go href="/cgi-bin/quote.pl">
  <postfield name="stock" value="00001"/>
</go>

示例2:产生一个"stockname=证券&page=1"Post申请

<go href="/cgi-bin/query.pl" method="post">
  <postfield name="stockname" value="证券"/>
  <postfield name="page" value="1"/>
</go>

任务和任务屏蔽
内部任务
  返回<prev>

  用来将当前页面的URL压入URL历史堆栈,并打开此前的URL,若该URL不存在,则<prev>无效。语法类似<go>,<prev>和</prev>之间可加入一句或多句<setvar name="name" value="value"/>,若不加,则必须以<prev/>的形式出现。

  刷新<refresh>

  用来刷新当前的页面,从而使得页面内的变量刷新或置空,语法与prev相同。<refresh> <setvar name="name" value="value"/> </refresh>,或<refresh/>。

  无动作<noop>

  表示什么也不做,该标签不能用在<anchor>中,一般用在覆盖DECK级的<do>。

任务屏蔽(Task Shadowing)
  WML的Task有两个级别,Deck级和Card级。通常人们还习惯把设置在某些条件中的任务成为第三级,在这里先不讨论,后面有专门的描述。

  Deck Level:把通用的Task设置在template中,这个Deck中所有的Card都自动继承并使用这些task。

  Card Level:只在当前的Card中有效,并替换掉Deck Level的相同属性的Task。

示例:

<wml>
  <template>
    <do type="options" name="general" label="Back">
      <prev/>
    </do>
  </template>
<!-- a deck level task-->

<card id="Card1">
  <p>Hello , this is a test <br/>
    <a href="#card2">the second</a>
  <p>
</card>

<card id="Card2">
<!-- This Card override the deck level task by noop -->
<do name="general" type="options" label="none">
  <noop/>
</do>
<p>nothing happend here</p>
</card>
</wml>

动作和链接
设置动作(Do)
Do是WML语言中最有有价值的元素之一,它给用户提供一种在当前Card上进行"动作"的通用方法。这种动作通常被定位在用户终端界面的特定部件上,例如WAP手机的功能键(Cancel,Option,Accept),特定的图标,语音识别功能等等。Do可以设置在Deck的Template上或者Card上,当他们重名的时候Card上的Do会覆盖Template上的同名元素(参看任务屏蔽说明)。

属性列表:

type:诉浏览器动作的意图。
  WML总共声明了9个类型的动作,最常用的动作类型是"accept"和"option"。
  1.1 accept,接受、确认
  1.2 prev,返回上一个历史堆栈中的URL
  1.3 help,请求帮助
  1.4 reset,清除或者重置状态
  1.5 options,根据当前页面的功能设置选项。
  1.6 delete,删除选择条目
  1.7 unknow,相当于空白字串
  1.8 还有两个属性还没有最后确定。

label:设置按钮标题,显示在浏览器定义好的屏幕位置,不同浏览器地显示位置不同。如果不设置标题,按钮会按照浏览器的缺省格式显示,不同浏览器的缺省格式不同。

name:按钮名称,可以用Card级的动作覆盖template上的同名动作,重新赋予那些动作新的任务。

optional:来定义一个按钮是否显示,设置为True时会被浏览器忽略

示例:

<do type="accept" label="Accept" name="accept1" optional="false">

   {Content}

</do>

链接(Anchor)
archor是WML定义链接的基础方式,与其他标签结合可以满足很多应用,anchor必须与go结合。

相关属性:

title 链接的文本显示内容。

示例:

<anchor title="Click"> click me <go href="#clickedMe"/> </anchor>

简化的链接形式(a)
a是anchor的简化形式,不需要Go语句配合。为了提高效率,推荐使用<a>。

相关属性:

1. href 超级链接的目标Url

示例:

<a href="#clickedMe">click me</a>

原创文章如转载,请注明:转载自悠悠博客 [ http://www.ajaxstu.com/ ]

相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。