嵌入式资讯网 首页| 注册 | 登录 |

WAP技术入门(续)

发表时间:2006-04-13 14:00:51发布人:administrator 阅读次数:2614


语法规则如下:
1、 每一行程序均以分号结尾
2、 注释方法:“//”或者“/* */”
3、 使用关键字“var”来声明变量
    怎么样?从上面我们就可看出来,WMLScript语言和javascript语言是多么的相似,WMLScript的变量类型有:Boolean、Interger、Floating-point、String、Invalid WMLScript的流程控制语言和javascript的相同,实例如下:

// if-else
if (x == y){  x = x * 3.25; }else{ x = 0; }
// for loop
for (var counter = 1; counter < 500; counter ++){ var i = counter * 1.05; somefunction(i); };
// while loop
while (i > j){ i--; };
// break
for (var counter = 1; counter < 500; counter ++){ var i = counter * 1.05; if (counter == 250) break; somefunction(i); };
file://continue
for (var counter = -100; counter < 100; counter ++){ if (counter == 0) continue; var x = 350/counter; };
函数:
WMLScript的函数使用方法如下:
extern function identifier(FormatParameterList) Block ; extern是说明函数是放在另外一个文件当中的。如下:
function RunTime(distance, speed){ var time = distance / speed; return time; };
    此例出入distance以及speed两个参数,然后返回time的值。如果调用的是WMLScript的內建函数,就必须加上这个函数所属的类名,例如调用 String类的length()函数,使用: var a = String.length('just a test'); 內建函数。
WMLScript有六大內建函数:
Lang:包含数据形态、绝对值、随机数等。
Float:浮点数处理。
String:字符串长度(length)、字符位置(charAt)等字串处理。
URL:getReferer、getHost。
WMLBrowser:go、prev、next、refresh等浏览处理。
Dialogs:弹出(prompt、confirm、alert)等对话框。
     首先我们先建立一个WML文件,WMLScriptExample.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 id="stuid" title="stuid:">
<do type="accept" label="Results">
  <go href="WMLScriptExample.wmls#checkid($(stuid))"/>
</do>
<p>
  Enter Stu_ID: <input type="text" name="stuid"/>
</p>
</card>
<card id="Results" title="Results:">
<p>
  You entered:<br/>
  Stu_ID: $(stuid)<br/>
</p>
</card>
</wml>
   让用户输入学号,go的href连接到另外一个.wmls文件,调用checkid函数。再建 立一个WMLScriptExample.wmls文件,內容如下:
extern function checkid(stuid){ if (String.length(stuid) != 8){ WMLBrowser.setVar("stuid", "Error: String must be 8 digits long."); } WMLBrowser.go("WMLScriptExample.wml#Results"); };
   这个WMLScript就是检查stuid字串长度是否为8,并且返回结果。 WMLBrowser.setVar()设定变量的值,WMLBrowser.go()將手机定位到下一个 WML文件,也就是WMLScriptExample.wml的Results卡片。
   怎么样?WMLScript是不是很类似于javascript?简直就是一模 一样,就是多了和WML文件相配合的功能而已。
   最后需要指出的是,现在的大多数WAP手机(Nokia7110、爱立信R320S等等)都是使用UTF-8编码的,也就是采用Uniecode来编码,这样,如果我们直接在WML/WMLScript中使用中文的话,将会产生乱码,手机用户无法识别,所以我们在输出中文之前,要对中文进行Uniecode的编码,这个工作就要服务器端的程序来完成了,比如我们使用ASP来做这项工作,可以调用这个函数实现转换,其他语言的实现方法类似:

Function c2u(myText)
For i = 1 to Len(myText) ' 对每一个字节进行处理

c = Mid(myText, i, 1)
c2u = c2u & "&#x" & Hex(AscW(c)) & ";"
' 将传回的Unicode转换为十六进制值
next
End Function
实现的例子如下:(chinese.asp)
<% Response.ContentType="text/vnd.wap.wml;charset=UTF-8"

 %> <?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<% Function c2u(myText)
For i = 1 to Len(myText)
c = Mid(myText, i, 1)
c2u = c2u & "&#x" & Hex(AscW(c)) & ";"
next
End Function
%> <wml>
<card id="card1" title="UTF8">
<p>
<%=c2u("IT的事找赛迪网!!")%><br/>
</p>
</card>
</wml>
在诺基亚的仿真手机中浏览这个ASP文件,就可以看到中文了!

结束语

  我们通过上面的介绍,也可以大致了解一下WAP技术的来龙去脉了,相信通过你自己的不断实践,一定能够驾驭它的。其实WML和HTML一样属于一个静态的页面,要 想真正建设吸引用户的WAP站点,不光要仅仅依靠WML本身,还要配合各种运行在服务器端的程序,比如ASP、PHP、JSP、CGI等等来实现丰富多彩的动态WAP网站,这就是后话了,暂且不谈。随着国内的WAP技术大环境的越来越完善,将会有更多的网站、ISP等投入到这场抢夺市场的战斗中来,相信WAP技术的可移动性和简易操作性将会吸引越来越多的用户投身到广阔的无线网络中,对于我们WEB开发人员来讲,掌握了WAP就掌握了未来。

发表评论    
你还没有登录,无法发表评论,请首先登录
登 录.. [注 册] 忘记密码

 
文章类别
·硬件设计 [32461]
   ·ARM文章 [357]
   ·DSP [600]
   ·单片机 [24589]
   ·AVR [32]
   ·无线开发 [0]
   ·EDA [581]
   ·接口电路 [353]
   ·存储技术 [109]
   ·显示光电 [64]
   ·电源技术 [860]
   ·传感/控制 [638]
   ·模拟技术 [270]
   ·通信网络 [1435]
   ·无线通信 [626]
   ·电测仪表 [529]
   ·消费电子 [287]
   ·汽车电子 [94]
   ·FPGA [365]
   ·总线设计 [228]
   ·汇编 [104]
·软件设计 [5734]
   ·WinCE [36]
   ·uC/OS [46]
   ·linux编程 [731]
   ·bootloader [2331]
   ·嵌入式开发 [1875]
   ·编程基础 [24]
   ·vxworks [21]
   ·网络协议 [23]
   ·linux使用 [558]
   ·linux内核 [20]
   ·数据库 [17]
   ·linux集群 [7]
   ·c&&c++编程 [8]
   ·短信开发 [15]
   ·wap开发 [8]
·程序杂谈 [98]
   ·程序杂谈-嵌入式 [55]
   ·程序杂谈-其它 [43]
·业界资讯 [23300]
   ·业界-嵌入式 [6197]
   ·业界-其它 [4691]
   ·最新技术 [0]
   ·市场分析 [0]
   ·最新方案 [659]
   ·专题报道 [395]
   ·新品速递 [4888]
   ·企业新闻 [6390]
   ·研究报告 [69]
   ·名企资讯 [0]
·移动开发 [196]
   ·Symbian [163]
   ·Windows Mobile [4]
   ·J2ME [29]
| 帮助中心 | 服务条款 | 友情链接 | 联系方式
业务联系邮箱:myembed@yahoo.com.cn MSN:beijinghaigang@hotmail.com  QQ:35268275
技术支持邮箱:myembed@yahoo.com.cn Copyright@2005:嵌入式资讯网  京ICP备10004724号