WML - 任务



WML 任务是一个元素,它指定浏览器要执行的操作,而不是要显示的内容。例如,更改到新卡片的操作由 <go> 任务元素表示,返回到之前访问的卡片的操作由 <prev> 任务元素表示。任务元素封装了执行操作所需的所有信息。

WML 提供以下四个元素来处理四个 WML 任务,称为 go 任务、pre 任务、refresh 任务和 noop 任务。

<go> 任务

顾名思义,<go> 任务表示转到新卡片的操作。

<go> 元素支持以下属性

属性描述
hrefURL给出新卡片的 URL。相对 URL 相对于当前卡片解析
method
  • get
  • post
指定用于获取卡组的方法。这必须是 get 或 post 中的一个值,分别对应于 HTTP 的 GET 和 POST 方法。

使用method="get"时,数据作为请求发送,并在 url 后附加 ?data。此方法有一个缺点,即它只能用于有限数量的数据,并且如果您发送敏感信息,它将显示在屏幕上并保存在 Web 服务器的日志中。因此,如果您正在发送密码等,请不要使用此方法。

使用method="post"时,数据作为请求发送,数据发送在请求正文中。此方法没有限制,敏感信息在 URL 中不可见

sendreferer
  • true
  • false
如果设置为 true,浏览器会将当前卡组的 URL 与请求一起发送。如果可能,此 URL 将作为相对 URL 发送。这样做的目的是允许服务器根据哪些卡组链接到它们来对卡组执行简单的访问控制。例如,使用 HTTP,此属性在 HTTP Referer 标头中发送。
accept-charsetcharset_list指定一个用逗号或空格分隔的字符集列表,这些字符集可以对在 POST 请求中发送到服务器的数据进行编码。默认值为“unknown”。
classclass 数据为元素设置类名。
id元素 ID元素的唯一 ID。

以下示例显示了 <go> 元素的使用。

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>

<card title="GO Element">
<p>
   <anchor>
       Chapter 2 : <go href="chapter2.wml"/>
   </anchor>
</p>
</card>
</wml>

另一个示例显示如何使用 Get 方法上传数据

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>

<card title="GO Element">
<p>
   <anchor>
      Using Get Method 
      <go href="chapter2.wml?x=17&y=42" method="get"/>
   </anchor>
</p>
</card>
</wml>

另一个示例显示如何使用 <setvar> 元素上传数据。

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>

<card title="GO Element">
<p>
   <anchor>
      Using setvar:
	  <go href="chapter2.wml"> 
	      <setvar name="x" value="17"/> 
  	      <setvar name="y" value="42"/> 
	  </go>
   </anchor>
</p>
</card>
</wml>

另一个示例显示如何使用 <postfiled> 元素上传数据

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>

<card title="GO Element">
<p>
   <anchor>
      Using setvar:
	  <go href="chapter2.wml" method="get"> 
              <postfield name="x" value="17"/>
              <postfield name="y" value="42"/>
	  </go>
   </anchor>
</p>
</card>
</wml>

<prev> 任务

<prev> 任务表示返回到历史堆栈中之前访问的卡片的操作。执行此操作时,历史堆栈中的顶部条目将被删除,并且该卡片将在 <prev> 任务中的任何 <setvar> 变量赋值生效后再次显示。

如果不存在先前的 URL,则指定 <prev> 不会产生任何影响。

<prev> 元素支持以下属性

属性描述
classclass 数据为元素设置类名。
id元素 ID元素的唯一 ID。

以下示例显示了 <prev> 元素的使用。

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>

<card title="Prev Element">
<p>
   <anchor>
        Previous Page :<prev/>
   </anchor>
</p>
</card>
</wml>

在 <prev> 任务中包含变量的一个有用情况是登录页面,该页面提示输入用户名和密码。在某些情况下,您可能希望在返回到登录卡时清除密码字段,强制用户重新输入。这可以通过以下结构完成

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>

<card title="Prev Element">
<p>
   <anchor>
        <prev>
           <setvar name="password" value=""/>
        </prev>
   </anchor>
</p>
</card>
</wml>

<refresh> 任务

<refresh> 任务是最简单的实际执行某些操作的任务。它的作用只是执行其 <setvar> 元素指定的变量赋值,然后使用新值重新显示当前卡片。<go> 和 <prev> 任务在显示新卡片之前执行相同的操作。

<refresh> 任务最常用于对卡片执行某种“重置”操作。

<refresh> 元素支持以下属性

属性描述
classclass 数据为元素设置类名。
id元素 ID元素的唯一 ID。

以下示例显示了 <refresh> 元素的使用。

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>

<card title="Referesh Element">
<p>
   <anchor>
         Refresh this page:
          <go href="test.wml"/>
          <refresh>
            <setvar name="x" value="100"/>
          </refresh>
   </anchor>
</p>
</card>
</wml>

<noop> 任务

<noop> 任务的目的是什么也不做(无操作)。

此任务的唯一实际用途与模板相关联

<noop> 元素支持以下属性

属性描述
classclass 数据为元素设置类名。
id元素 ID元素的唯一 ID。

以下示例显示了 <noop> 元素的使用。

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>

<card title="Noop Element">
<p>
  <do type="prev" label="Back">
      <noop/>
  </do>
</p>
</card>
</wml>
广告

© . All rights reserved.