Warning:
This wiki has been archived and is now read-only.

HTML5/timers

From HTML5 Chinese Interest Group Wiki
Jump to: navigation, search

定时器

setTimeout()setInterval()方法允许编码人员设置基于时间的回调函数。

[NoInterfaceObject]
interface WindowTimers {
  long setTimeout(Function handler, optional long timeout, any... args);
  long setTimeout([AllowAny] DOMString handler, optional long timeout, any... args);
  void clearTimeout(long handle);
  long setInterval(Function handler, optional long timeout, any... args);
  long setInterval([AllowAny] DOMString handler, optional long timeout, any... args);
  void clearInterval(long handle);
};
Window implements WindowTimers;
此区块中不是标准描述,实现要求在下面给出。

handle = window . setTimeout( handler [, timeout [, arguments... ] ] )

设置一个时限,在timeout毫秒之后运行handler。所有arguments将直接传递给handler

handle = window . setTimeout( code [, timeout ] )

设置一个时限,在timeout毫秒之后编译并运行code

window . clearTimeout( handle )

清除使用handle通过setTimeout()方法设置的时限。

handle = window . setInterval( handler [, timeout [, arguments... ] ] )

设置一个时限,每timeout毫秒运行handler。所有arguments将直接传递给handler

handle = window . setInterval( code [, timeout ] )

设置一个时限,每timeout毫秒编译并运行code

window . clearInterval( handle ) Cancels the timeout set with setInterval() identified by handle. 清除使用handle通过#dom-windowtimers-setInterval()方法设置的时限。

注:该API不保证计时器将在时间表上精确运行。因为CPU负荷、其他任务等造成的延迟是可被预期的。
注:WindowTimers接口被加入到Window接口和WorkerUtils接口(Web Workers的一部分)。

每个实现了WindowTimers接口的对象都拥有一个活跃计时器列表。该列表中的每个记录由一个数字定义,其在实现了WindowTimers接口的对象的全生命周期中是唯一的。

用户提示

本章节移至另一页面

系统状态和能力:Navigator对象

Window接口的navigator属性必须回传一个Navigator接口的实例,用来标识该用户代理(客户端)的型号与状态,并允许网页将自身注册为协议/内容处理器。

interface Navigator {
  // 實作此接口的对象或同時實作以下的數個對象
};
Navigator implements NavigatorID;
Navigator implements NavigatorOnLine;
Navigator implements NavigatorContentUtils;
Navigator implements NavigatorStorageUtils;

因为这个接口被分为数个接口分开定义,其他规范可以只使用Navigator接口的一部份。

客户端标识

[Supplemental, NoInterfaceObject]
interface NavigatorID {
  readonly attribute DOMString appName;
  readonly attribute DOMString appVersion;
  readonly attribute DOMString platform;
  readonly attribute DOMString userAgent;
};

尽管有整个产业的努力,在某些情况下,浏览器具有某些程序错误或限制,使得作者必须绕道解决。

本小节定义了几个可以从脚本来判断用户代理属性,以用来解决这些问题。

客户端侦测应该被限制于侦测现存的浏览器版本,作者应该假设未来或是未知的浏览器版本完全符合此小节的描述。

window . navigator . appName
回传浏览器的名称
window . navigator . appVersion
回传浏览器的版本
window . navigator . platform
回传平台的名称
window . navigator . userAgent
回传完整的「User-Agent」标头

appName

回传值必须是字符串"Netscape"或是浏览器的全名,例如:"Mellblom Browsernator"。

appVersion

回传值必须是字符串"4.0"或者是表达浏览器版本的详细说明的字符串,例如:"1.0 (VMS; en-US) Mellblomenator/9000"。

platform

回传值必须是空白字符串或者是表现浏览器运行平台的字符串,例如:"MacIntel"、"Win32"、"FreeBSD i386"、"WebTV OS"。

userAgent

还传值必须是HTTP请求的「User-Agent」标头的字符串或者是空白字符串(从未送出该表头的情形)

警告!这个 API 里的拥有的讯息若是随著用户改变,此讯息可被用来制作用户的侧写。如果具有足够的讯息,用户甚至可以被完全的识别出来。因此,这里强烈建议用户代理在这个 API 里放置尽量少的讯息。

自定义协议和内容处理

安全和隐私
用户界面示例

手动释放存储互斥量