WAP初级教程—事件EVENT

事件 (EVENT)
·  <anchor> 链接    ·  <onevent> 固有事件    ·  <timer> 计时器     ·  <do> 用户触发事件
·  DECK级事件               


任务不能在真空中生存,它们必须绑定倒某个事件上才能做一些有用的事情。事件发生--〉任务执行,这才是完整的进程控制。

有4个元素可以帮助你完成事件对任务的绑定:<anchor>、<onevent>、<timer>和<do>。
<anchor> 链接
象HTML一样,WML也可以定义到其他程序的链接。在HTML中,链接通常用下划线和特殊颜色的方式表示跟其他内容的区别。在WAP终端上则没有严格的规则说如何表示一个链接,一般采用反白的显示方式。

<anchor>的语法如下:<anchor
   title="STRING"
   xml:lang="STRING"
>
  <br>, <go>, <img>, <prev>, <refresh>, TEXT
</anchor>


title:链接的标题;
xml:lang:语言编码。

在这种定义方式中,实际上链接一般是通过<anchor>中包括的<go>元素完成的。比如下面的例子定义了2个CARD,点击第一个CARD里的“click me”链接会跳转到第2个CARD: <?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="Hello" title="Hello">
  <p>Hello,
  <anchor>click me
   <go href="#bye"/>
  </anchor>
  </p>
</card>

<card id="bye" title="Bye">
  <p>Bye, guys</p>
</card>
</wml>

点击前显示:    点击后显示:
------- Hello -------
Hello,

        -------- bye --------
Bye, guys




链接还有一种短格式,语法如下: <a
   href="STRING"
   title="STRING"
   xml:lang="STRING"
>
  <br>, <img>, TEXT
</a>


除了跟原来一样的两个属性以外,多了href属性,可以对它直接指定URL。例如下面的例子定义了一个带有图像的链接: <a title="HotBars" href="wap.hucn.com/HotBars.wml">
  <img src="hot.wbmp" alt="Hot Bars" />
</a>


除了跟原来一样的两个属性以外,多了href属性,可以对它直接指定URL。

<onevent> 固有事件 [TOP]
WML定义了4种由用户终端触发的固有事件:

oneventforward:当用户被<go>任务或其他机制(如一个SCRIPT过程)引导到一个CARD时触发;
oneventbackward:当用回被<prev>或其他机制(如在设备上按BACK按钮)引导到一个CARD时触发;
ontimer:当TIMER计时结束时触发。定义TIMER计时器可以使用<timer>元素,见下一节;
onpick:当用户按下一个<option>选项时触发(可以是选中或取消选择)。

把这些事件绑定到一个任务要使用<onevent>元素,它的语法如下: <onevent
  type="oneventforward | oneventbackward | ontimer | onpick"
>
  <go>, <noop>, <prev>, <refresh>
</onevent>


下面的例子演示了如何使用固有事件在CARD调入时清空变量。<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
 "http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>
<card id="card1">
  <onevent type="oneventforward">
  <refresh>
   <setvar name="firstname" value=""/>
   <setvar name="lastname" value=""/>
  </refresh>
  </onevent>
  <p>
   You have no name!
  </p>
</card>
</wml>


<timer> 计时器 [TOP]
看名字就知道,这是个计时器,它在经过规定的计时时间以后产生一个任务。<timer>计时器只在所属CARD里有效:当进入CARD时,计时器开始工作;时间一到,触发任务;如果离开CARD,计时器停止。语法如下:<timer
 name="STRING"
  value="NUMBER"
/>


name:可选。指定一个包含计时时间的变量,在计时器开始工作以后,变量的值会逐渐减少。如果这个变量在<timer>之前就已经存在并且赋值为一个非负整数,那后面value属性的值会被忽略,直接使用变量里的值作为计时时限。
value:必选。指定计时时间,以1/10秒为单位。

下面的例子每隔1秒显示不同的文字(当然,你有兴趣改成图像也可以)。

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

<wml>

<card id="Hello" title="Hello">
  <onevent type="ontimer">
   <go href="#card2">
  </onevnet>
  <timer value="10"/>
  <p>Hello!</p>
</card>

<card id="Take care">
  <onevent type="ontimer" title="Take care">
   <go href="#card3">
  </onevnet>
  <timer value="10"/>
  <p>R U tired?</p>
  </card>

<card id="Rest">
  <onevent type="ontimer" title="Rest">
   <go href="#card1">
  </onevnet>
  <timer value="10"/>
  <p>Take a rest!</p>
</card>

</wml>

显示结果如下,注意会不断循环。         Sport选择:
第1秒    第2秒    第3秒
------ Hello ------
Hello!

        ----- Take care ----
R U tired?

        ------- Rest -------
Take a rest!




还有一个例子,通常用来做网站封面,显示一段欢迎词以后进入正式内容。这里没有使用图片,各位可以自己加上试试看。<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
  "http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>

<card id="Welcome to WAP86" ontimer="wap86.wml">
  <timer value="30"/>
  <p>
   Hello!
   Welcome to WAP86 - the paradise of WML developers.
  </p>
</card>

</wml>

部件     功能
accept     确认,接受输入
prev     退回历史页面访问堆栈里上一个CARD
help     上下文关联的帮助信息
reset     重设设备状态
options     上下文关联的选项或附加操作
delete     删除当前内容或选择
unknown    
由开发者自己定义

<do> 用户触发事件 [TOP]
每个WAP终端都预定义了一系列用户界面部件,如手机上的按钮、触摸屏上的图表、声音指令或者其他一些很容易是别的部件。WML1.1定义了右面那些WAP兼容终端必须支持的部件。但是要说明的是,只有prev有预先定义的功能,其他的只是概念上的定义,需要根据开发者激活并赋予一定的动作。

当用户激活这些部件的时候会产生相应的事件。你可以使用<do>元素捕获这些事件并对其做出反应。下面是<do>的语法:
<do
 type="accept | prev | help | reset | options | delete | unknown"
  lebel="STRING"
  name="STRING"
  optional="true | false"
  xml:lang="STRING"
>
<go> | <noop> | <prev> | <refresh>
</do>


type:必选属性,内容只能是那7种;
label:用户接口部件的显示标签。如果终端不能显示则被忽略。WML1.1建议此属性长度限制在6个英文字符以内;
name:标志“事件/任务”绑定关系的唯一名称(在CARD范围内)。CARD级的<do>事件替换同名的DECK级<do>事件(见下一节)。如果不指定name属性或name为空字符串,则name默认为type的类型;
optional:告诉终端此软按钮在屏幕中是否显示。如果此值设为true,则忽略本<do>元素。默认值为false;
xml:lang任务:语言代码。

跟其他“事件/任务”绑定关系一样,<do>里的任务定义必须是<go>、<noop>、<prev>或<refresh>中的一个。
下面例子演示了<do>的使用方法。用户按了不同的按钮会被导向不同的CARD。<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
  "http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>

<card id="Card1" title="WAP86 Links">
  <do type="accept" label="Links" optional="false">
    <go href="#Links"/>
  </do>
  <do type="help" label="Help" optional="false">
    <go href="#Help"/>
  </do>
 <p> WAP86’s perfect links</p>
</card>

<card id="Links" title="WAP86 Links">
  <p> Select one:<br><br>
   <a href="wap.hucn.com">hucn</a><br>
   <a href="wap.hucn.com">hucn</a>
  </p>
</card>

<card id="help" title="Help">
  <do type="accept" label="Links" optional="false">
   <go href="#Links"/>
  </do>
  <p>
    Select "Links" button to view the links.
  </p>
</card>

</wml>

显示结果
主画面:    按下“Links”按钮以后:    按下“Help”按钮以后:
---- WAP86 Links ---
WAP86’s perfect links

Links      Help

        ---- WAP86 Links ---
Select one:

>[ WAP86 ]
[ AT86 ]
        ------- Help -------
Select "Links" button to view the links.

Links



DECK级事件 [TOP]
前面(DECK一节,关于<template>)已经讲过可以用<template>元素定义DECK级事件,做法跟CARD级事件一样,只要在<template>元素里包含<do>或<onevent>事件就可以。这种做法可以定义一些在每个CARD里都需要定义的事件,而不需要重复说明。比如下面的例子给所有的CARD定义了BACK按钮以便返回上一页: <?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
  "http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>

<template>
  <do type="prev" label="BACK" optional="false">
   <prev/>
  </do>
</template>

<card id="Links" title="WAP86 Links">
  <do type="help" label="Help" optional="false">
   <go href="#Help"/>
  </do>
  <p> Select one:<br><br>
   <a href="wap.hucn.com">hucn</a><br>
   <a href="wap.hucn.com">hucn</a>
  </p>
</card>

<card id="help" title="Help">
  <do type="accept" label="Links" optional="false">
   <go href="#Links"/>
  </do>
  <p>
   Select "Links" button to view the links.
 </p>
</card>

</wml>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章 WAP SERVER = WEB SERVER + CONFIGURATION.................................................3 1.1 WAP SEVER CONFIGURATION................................................................................ 3 1.2把MICROSOFT IIS 变成WAP SERVER................................................................... 4 1.3 将APACHE 升级为WAP SERVER .......................................................................... 9 1.4 建立WAP 的测试环境...................................................................................... 11 第二章 WML语言基础.......................................................................................................................13 2.1 WML的简单例子及编辑、测试方法.................................................................... 13 2.2 WML程序结构................................................................................................. 15 2.3 WML语言的基本知识....................................................................................... 21 第三章 WML编程...............................................................................................................................26 3.1 卡片、卡片组及其属性...................................................................................... 26 3.2 任务及其元素................................................................................................... 30 3.3 时间及其元素................................................................................................... 32 3.4 变量设置元素与变量设置的有关规定.................................................................. 38 3.5 用户输入处理元素............................................................................................ 39 3.6 锚、图像、定时器及其元素............................................................................... 43 3.7 文本格式化及其元素......................................................................................... 46 第四章 WML SCRIPT语法基础.......................................................................................................49 4.1 WML 程序中调用WML SCRIPT函数.................................................................. 49 4.2 WMLSCRIPT的主要优点及其字节码解释器.......................................................... 49 4.3 WMLSCRIPT基本规则....................................................................................... 51 4.4 变量与数据类型............................................................................................... 55 4.5 操作符与表达式............................................................................................... 60 第五章 WMLSCRIPT脚本程序设计(上)....................................................................................66 5.1 语句............................................................................................................... 66 5.2 函数的声明与调用............................................................................................ 81 5.3 预编译............................................................................................................ 90 5.4 执行时的错误检测与处理................................................................................... 94 第六章 WML SCRIPT标准函数库.................................................................................................102 6.1 WML SCRIPT规则........................................................................................... 102 6.2 LANG函数库................................................................................................... 102 6.3 FLOAT函数库.................................................................................................. 107 6.4 STRING函数库................................................................................................ 109 6.5 URL 函数库................................................................................................... 116 6.6 WML浏览器函数库........................................................................................ 123 6.7 DIALOG函数库............................................................................................... 127

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值