分类存档: markup language - 第2页

xhtml mp的事件支持测试

以下是xhtml mp支持的事件,其中onload和onclick事件是规范规定浏览器必需支持的,其它为可选。具体哪种元素支持哪些事件,因浏览器不同而不同,可以修改以下代码进行测试。还附加了个XMLHttpRequest对象检测。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//OMA//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
<title>DOM Events Test For XHTML Mobile Profile</title>
</head>
<body>
ajax:<label id="ajax"></label><br />
onload:<label id="load"></label><br />
onunload:<label id="unload"></label><br />
onclick:<label id="click"></label><br />
ondblclick:<label id="doubleclick"></label>
onmousedown:<label id="mousedown"></label><br />
onmouseup:<label id="mouseup"></label>
onmouseover:<label id="mouseover"></label><br />
onmousemove:<label id="mousemove"></label>
onmouseout:<label id="mouseout"></label><br />
onfocus:<label id="focus"></label>
onblur:<label id="blur"></label><br />
onkeypress:<label id="keypress"></label>
onkeydown:<label id="keydown"></label><br />
onkeyup:<label id="keyup"></label>
onsubmit:<label id="submit"></label><br />
onreset:<label id="reset"></label>
onselect:<label id="select"></label><br />
onchange:<label id="change"></label><br />

<form action="" method="get" id="f1">
  <input type="button" value="点击我" id="b1" />
  <input type="text" value="点击我" id="t1" />
</form>
<script type="text/javascript">
//<![CDATA[
  /**
   * Ajax支持判断
   */
  var xmlHttp;
  function createXMLHttp()
  {
    if (window.XMLHttpRequest)
    {
      xmlHttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
      try
      {
        xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
      }
      catch(e)
      {
        try
        {
          xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
        }
        catch(e) {};
      }
    }
  }
  createXMLHttp();
  if (xmlHttp)
  {
    document.getElementById('ajax').innerHTML = "支持";
  }
  else
  {
    document.getElementById('ajax').innerHTML = "不支持";
  }
  /**
   * 从这里开始
   */
  function $(id)
  {
    return document.getElementById(id);
  }
  window.onload = function()
  {
    $('load').innerHTML = "支持";
    if (window.onresize)
    {
      $('resize').innerHTML = "支持";
    }
  }
  $('b1').onclick = function()
  {
    $('click').innerHTML = "支持";
    $('f1').onsubmit();
    $('f1').onreset();
  }
  $('b1').ondblclick = function()
  {
    $('doubleclick').innerHTML = "支持";
  }
  $('b1').onmousedown = function()
  {
    $('mousedown').innerHTML = "支持";
  }
  $('b1').onmouseup = function()
  {
    $('mouseup').innerHTML = "支持";
  }
	$('b1').onmouseover = function()
  {
    $('mouseover').innerHTML = "支持";
  }
	$('b1').onmousemove = function()
  {
    $('mousemove').innerHTML = "支持";
  }
	$('b1').onmouseout = function()
  {
    $('mouseout').innerHTML = "支持";
  }
	$('t1').onkeydown = function()
  {
    $('keydown').innerHTML = "支持";
  }
	$('t1').onkeypress = function()
  {
    $('keypress').innerHTML = "支持";
  }
	$('t1').onkeyup = function()
  {
    $('keyup').innerHTML = "支持";
  }
	$('t1').onfocus = function()
  {
    $('focus').innerHTML = "支持";
  }
	$('t1').onblur = function()
  {
    $('blur').innerHTML = "支持";
  }
	$('t1').onselect = function()
  {
    $('select').innerHTML = "支持";
  }
	$('t1').onchange = function()
  {
    $('change').innerHTML = "支持";
  }
	$('f1').onsubmit = function()
	{
		$('submit').innerHTML = "支持";
		return false;
	}
	$('f1').onreset = function()
  {
    $('reset').innerHTML = "支持";
    return false;
  }
//]]>
</script>
</body>
</html>

手机页面设计及编写的建议规则(一)

我总结的手机web页面设计及编写规则,适用于xhtml basic 和 xhtml mp。仅代表个人观点。

1. 设计相关

1.1 硬件限制

推荐结构

推荐结构

手机屏幕由于尺寸、分辨率和色彩的限制,不能正常显示我们用于普通显示器的设计。在设计mobile web时要注意尽量避免产生滚动条,必需有滚动条时要保障只在一个方向上产生,如右图所示,不使用传统的上左右下结构,而使用上下结构。应该把主要的导航链接放在页面顶部,而且应当尽量精简,1或2行较为适宜。如果需要其它次要的导航就放在页面底部,这样用户打开页面后无需滚动就能看到页面的主要内容。不要使用过于复杂的色彩,手机屏幕不一定能正常显示,只要使网站总体风格一致即可。

手机网络往往要比有线链接要慢,例如,中移动GPRS升级EDGE后峰值只有384kbps,而且由于机制所限,手机连接互联网会产生较高的延迟,这些都将导致页面加载时间的延长;使用移动网络需要用户支付的费用通常会比较高,中移动降价后的GPRS流量费仍高达0.01元/KB。(不知升级3G后会是何种情况,呵呵)

在进行页面设计时应注意图片,flash等元素的使用,不要尺寸和字节数过大的图片,这样加快网页加载,不产生不必要的滚动条,降低用户的使用成本。

版本低一点的手机浏览器往往不支持脚本或插件,而且在许多情况下,用户没有选择的浏览器或者升级旧浏览器的余地。像重新载入网页,构建表,处理不必要而且复杂的样式表,处理无效的标记等等这些操作,由于手机的处理能力通常都相当有限,这意味着网页渲染可能需要很长时间才能完成,这将引起明显的延迟,并且浪费更多的电池电量。

1.2 用户输入

手机输入一般都不像使用普通键盘那么方便,而且一般手机都没有像鼠标这样的指点设备,应尽可能让用户少输入内容。例如一个较长的URI,用户没有耐心去输入它,而且也不能保证输入的正确性。

例如:不推荐使用这样的URI
“http://www.example.org/index.html”,
推荐使用这样的
“http://example.org”。

1.3 用户目标

用户通过手机上网浏览所需的网页时,通常都比桌面用户有更具体的目标,他们的意图往往是为了找出直接相关的资料。例如,用户可能需要收发某封重要的电子邮件,找一个距离最近的中国石油的加油站,看看CCTV5今天是否直播火箭队的比赛等等,恰巧手边又没有一台能上网的电脑。

同样,手机用户通常不太关心冗长的文件或内容。手机屏幕是不适合阅读长篇内容,用户往往还是因为没有更方便的接入方法,只得使用手机作为最后的手段。

2. 代码相关

2.1 文件总体结构应遵循以下样式。
xhtml mp使用:

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE html PUBLIC “-//OMA//DTD XHTML Mobile 1.2//EN” “http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”application/xhtml+xml; charset=utf-8″ />
<title>公交搜索</title>
</head>
<body>

</body>
</html>
xhtml basic使用:

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML Basic 1.1//EN” “http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”application/xhtml+xml; charset=utf-8″ />
<title>公交搜索</title>
</head>
<body>

</body>
</html>

2.2 去掉不必要的空格和换行

不必要的空格和换行会增大文件大小,去掉空格及换行对浏览器解析来说没有不好的影响,因此推荐在编写完成上传服务器时去掉不必要的内容。

2.3 尽量避免使用Cookie

不是所有的浏览其都支持Cookie,即使支持也不是所有的用户都开启了Cookie支持。我们可以在URL中传递相关信息,当然,要注意不要超过最大长度。如果使用Cookie也要保证是哪些非必要的功能在使用它。

2.4 不要使用<table>标签

<table>在小屏幕上表现不佳,解析难度较大,大多数手机浏览器对<table>都支持不佳。

2.5 图片或其它嵌入对象要添加必要属性

在使用图片或flash等元素时,要添加alt属性,以便在元素不能加载时给用户相应的提示,添加width,height属性,防止发生不可预期的版式破坏,添加id属性以替代name属性。

2.6避免使用绝对度量单位

推荐使用em,ex或者百分比等相对单位替代px,这样便于浏览器对网页的自动缩放。

2.7 把需要共享的样式和脚本通过外部链接引入

推荐把样式和脚本写在文件里通过外部链接引入,这样可以减少解析难度和出错几率。

如果客户端支持缓存就可以不再向服务器发送请求,如果不支持,那么每次都要从服务器取这个文件,不相关的内容也在这个文件里,将额外增加不必要的流量;网页里的每个外部链接都会单独从服务器请求一次,如果内容过于分散,请求次数就会很多。

因此,尽量把可以共享的样式或脚本写在单一的文件里,减少不必要的请求和流量。

HTML 4与XHTML 1.0区别

翻译w3c的http://www.w3.org/TR/xhtml1/ 第四部分,具体的不同还要参考DOM(不是很喜欢DOM的个别地方,用JS操作一个元素时,原本简单的东西往往得很多句才能搞定,再次抱怨一下,呵呵)和XML。

编写手机页面时所用的xhtml mp和xhtml basic 依照xhtml标准,虽然浏览器一般都较宽容,但不推荐旧的写法。

XHTML文档必须具有良好完整的排版(well-formed)

编排良好性(Well-formedness)是XML引入的一个新概念.从本质上说,元素必须有结束标签,或者必须以特殊方式书写,而且元素必须嵌套.

尽管SGML规定重叠(overlapping)是非法的,但现有的浏览器普遍允许重叠.

正确:嵌套元素(nested elements)

<p>梦之都 <em>XHTML教程</em>.</p>

不正确:层叠元素(overlapping elements)

<p>梦之都 <em>XHTML教程</p>.</em>

元素和属性名必须小写

对于所有HTML元素和属性名, XHTML文档必须使用小写. 因为XML是大小写敏感的.如 <li><LI> 是不同的标签.

对非空元素,必须使用结束标签

在基于SGML的HTML4中的一些隐含结束意义的元素允许忽略结束标签.XML不允许忽略结束标签.除了在DTD中被声明为空的元素,所有元素必须有结束标签.

正确:结束的元素(terminated elements)

<p>梦之都的XHTML教程.</p><p>梦之都的CSS教程.</p>

不正确:未结束的元素(unterminated elements)

<p>梦之都的XHTML教程.<p>梦之都的CSS教程.

属性值必须在引号中

所有的属性值必须在引号中,即使是以数字形式的属性值

正确:在引号中的属性值(quoted attribute values)

<table rows="3">

不正确:不在引号中的属性值(unquoted attribute values)

<table rows=3>

属性最小化

XML不支持属性最小化.属性-属性值必须完整成对的写出.像disabled,checked这样的属性名不能在不指定属性值的情况下出现.

正确:非最小化属性(unminimized attributes)

<input checked="checked">

不正确:最小化属性(minimized attributes)

<input checked>

空元素

空元素必须有结束标签,或者起始标签必须以/>结束.例如,<br/><hr></hr>.参看HTML兼容性指导HTML Compatibility Guidelines中的信息,以保证向后兼容HTML 4用户代理程序.

正确:结束的空元素(terminated empty elements)

<br/><hr/>

错误:未结束的空标签(unterminated empty elements)

<br><hr>

属性值中的空白字符处理

  • 删去引导和后序空白符
  • 将一个或多个空白符(包括换行)转换成单个字符间空间

Script and Style 元素

XHTML中,scriptstyle元素被声明为#PCDATA内容形式,因此,<和&被看作是标识的开始,&lt和&amp等HTML实体将被XML处理器看作为实体引用而分别被认为是<和&.将scriptstyle元素的内容隐蔽在CDATA标记中避免了这些实体的扩张.

<script>
<![CDATA[
... unescaped script content ...
]]>
</script>

CDATA部分被XML处理器识别,表现为文档对象模型中的一个结点.替代的方式是使用外部script和style文档.

SGML排斥

SGML给作者的DTD可以指定在一个元素内部禁止出现的元素.这样的禁止在XML中是不可能的.

例如,严格的HTML 4 DTD”禁止”任何深度的’a'元素对另一’a'元素的嵌套.在XML中无法写出这些的”禁止”.虽然这些禁止不能被定义在DTD中,但是一些元素不应该被嵌套.对不能被嵌套的元素Element Prohibitions的总结.

具有’id’和’name’属性的元素

HTML4定义了name属性的元素有a,applet,form,frame,iframe,img and map.HTML4还引入了id属性.这两个属性都是被设计用为片段标识符.

在 XML中,片段标识符是ID,每个元素只能有一个ID类型的属性.因此,在XHTML1.0中,id属性被定义为ID类型.为保证XHTML1.0文档是 结构良好(well-structured)的XML文档,在定义一个片段标识符时,XHTML文档必须使用id属性,即使是对那些以前用name属性的 元素.参看 HTML Compatibility Guidelines,确保XHTML文档以text/html媒体类型使用时,这些”锚(anchors)”能向后兼容.

注意,在XHTML 1.0中,name属性是不赞成使用的,在以后的XHTML版本中将被删除。

有预定义值的属性

在HTML 4和XHTML都有一些属性,它们有预先确定且有限的值(例如, type属性的input元素) 。在SGML和XML中 ,这些被称为枚举属性。在HTML 4中 ,这些值是不区分大小写的,所以TEXT和text是一样的。在XML中,这些值是区分大小写的,而在XHTML 1所有这些值都应该是小写的。

mobile ok checker

http://validator.w3.org/mobile/ 检查所写的mobile web page 是否符合标准。其实我觉得不用完全符合,呵呵。

手机web开发资料

3G牌照发了,近期要开始仔细研究手机端的web开发了,在网上找了找资料,中文的真不是一般的少,简直就是没有,唉,还是看E文的吧。

把找到的网站整理一下,以便查找。

1. http://www.openmobilealliance.org/ OMA,WapForum与前OMA合并后的组织,WML及XHTML MP的制订者。不过我在者没找到啥东西,http://www.openmobilealliance.org/Application/Search/?search=xhtmlmp 这个链接是关于xhtml mp的pdf文档。

2. http://www.w3c.org W3C,XHTML Basic 制定者,http://www.google.com/custom?q=XHTML+Basic+1.1&sitesearch=www.w3.org&domains=www.w3.org 这个链接可以找到w3c上关于xhtml basic的内容。http://www.w3.org/TR/mobileOK-basic10-tests/http://www.w3.org/TR/mobile-bp/ .当然,还有更多内容,http://www.w3.org/TR/http://www.w3.org/Mobile/

3. http://www.developershome.com/ Developers’ Home ,网站上有些关于手机web开发的教程和文章,http://www.developershome.com/wap/xhtmlmp/ 这个链接是关于xhtml mp的部分。

4. http://dev.opera.com/articles/mobile/ Opera,上面有些Opera提供的关于mobile的内容,http://dev.opera.com/articles/view/mobile-markup-xhtml-basic-1-1/ 这是一篇讲XHTML Basic 1.1的。

5. http://en.wikipedia.org/wiki/XHTML_Mobile_Profilehttp://en.wikipedia.org/wiki/XHTML ,维基百科上关于xhtml mp,xhtml,xhtml basic的部分。

6. http://www.passani.it/gap/ Global Authoring Practices for the Mobile Web

7. http://developer.openwave.com/documentation/xhtml_mp_css_reference/index.html openwave上关于xhtmlmp的文档。

8. http://mobilewebbook.com/ Cameron Moll的一本书,有预览版,没找着下载的地方,先放在这,以后再找。http://cameronmoll.com/ ,他的网站。
另一本书Mobile Web Development

9.  http://www.smashingmagazine.com/2009/01/13/mobile-web-design-trends-2009/ 闲人们组织了个大会,讨论了一下09年手机web的发展趋势。

10. http://mobiforge.com/

先这些,找着新的再补。