电脑技术学习

WAP开发常见问题汇总篇

dn001

"http://www.wapforum.org/DTD/wml_1.1.xml">
  <wml>
    <head>
      <meta forua="true" http-equiv="Cache-Control" content="max-age=86400"/>
    </head>
    <card id="expire1day">
      <p>This card will live in the cache for a day</p>
    </card>
  </wml>

有些浏览器例如:UP.Simulator如果可以通过“返回达到另外一个卡片,那么它将不会重新装载卡片。为了强制这个更新动作,用户必须在META标签中使用must-revalidate 参数。

<meta forua="true" http-equiv="Cache-Control" content="must-revalidate"/>

28. 如何防止变量被保存在Cache中?

变量保存在Cache中,这样变量还可以再利用。例如当用户返回到上一个输入卡片,他不需要重新输入,只需要改变需要改变的地方。但是在某些情况下这会造成一些问题。例如以WAP聊天系统,有些变量用了一遍又一
遍,但是需要不同的内容。有些浏览器,例如:Nokia 7110,就会存在类似的在该清除的时候无法清除的问题。
在WML中,<card>标签有一个参数叫做newcontext。
当newcontext="true" 时清除所有的变量。但是这样也清除了所有导航的历史记录,这意味着back按钮不再工作。
为了清除变量,可以告诉浏览器将变量设为空:

<setvar name="one_variable" value=""/>
<setvar name="another_variable" value=""/>

但是,不是每个时候都有效果。在某些情况下必须使用一个难以想象的方法来清空变量。就是使用 onenterforward 事件。

<onevent type="onenterforward">
   <refresh>
     <setvar name="one_variable" value=""/>
     <setvar name="another_variable" value=""/>
   </refresh>
</onevent>
29. 怎么能够知道请求是从WML浏览器来的还是HTML浏览器来的?

既然要利用已经存在的为HTML浏览器编写的代码,就需要知道请求是从HTML浏览器还是从WML浏览器过来的。同样地,如果想重新引导的HTML浏览器直接到相应的HTML文档上,WML浏览器到WML页面上
,以下的PHP代码就可以做到这些。

<?
// Because this script sends out HTTP header information,
// the first characters in the file must be the <? PHP tag.

// relative URL to your HTML file
   $htmlredirect = "/html/my_htmlpage.html";
// ABSOLUTE URL to your WML file 
   $wmlredirect = "http://wap.mysite.com/wml/my_wmldeck.wml";

   if(strpos(strtoupper($HTTP_ACCEPT),"VND.WAP.WML") > 0)
{// Check whether the browser/gateway says it accepts WML.
     $br = "WML";
   }
   else {
     $browser=substr(trim($HTTP_USER_AGENT),0,4);
     if($browser=="Noki" || // Nokia phones and emulators
        $browser=="Eric" || // Ericsson WAP phones and emulators
        $browser=="WapI" || // Ericsson WapIDE 2.0
        $browser=="MC21" || // Ericsson MC218
        $browser=="AUR " || // Ericsson R320
        $browser=="R380" || // Ericsson R380
        $browser=="UP.B" || // UP.Browser
        $browser=="WinW" || // WinWAP browser
        $browser=="UPG1" || // UP.SDK 4.0
        $browser=="upsi" || // another kind of UP.Browser ??
        $browser=="QWAP" || // unknown QWAPPER browser
        $browser=="Jigs" || // unknown JigSaw browser
        $browser=="Java" || // unknown Java based browser
        $browser=="Alca" || // unknown Alcatel-BE3 browser (UP based?)
        $browser=="MITS" || // unknown Mitsubishi browser
        $browser=="MOT-" || // unknown browser (UP based?)
        $browser=="My S" || // unknown Ericsson devkit browser ?
$browser=="WAPJ" || // Virtual WAPJAG www.wapjag.de
$browser=="fetc" || // fetchpage.cgi Perl script from