这里需要注意一下:使用 PHP 获取当前系统时间时,因为 PHP 默认是格林威治标准时间,所以跟北京时间会有相差,在调试程序之前需要手动修改 php.ini 配置文件,用记事本打开该文件,Ctrl+F 查找 date,找到 date.timezone,将其修改为 date.timezone = PRC,PRC 为中华人民共和国。也可以在获取时,使用代码完成:$time = date('Y-m-d H:i:sa',time() + 7*3600)。
1 <?php 2 header('Content-Type: text/event-stream'); 3 header('Cache-Control: no-cache'); 4 $time = date('Y-m-d H:i:sa'); 5 echo "data: 服务器时间: {$time}\n\n"; 6 flush(); 7 ?>
代码解析:
①:把报头 "Content-Type" 设置为 "text/event-stream"。
②:规定不对页面进行缓存。
③:输出发送日期,始终以 "data: " 开头。
④:向网页刷新输出数据。
下面是完整的 HTML 代码:
服务器发送事件获取服务端更新数据){ ); (event){ ; 15 }; 16 } 17 else{ ; 19 }
可以使用个人配置的站点,在浏览器打开上面的程序。
因为除了 IE 之外,所有主流浏览器均支持服务器发送事件。所以在 IE 中显示为:
在 Chrome 下显示为:
(5)、EventSource 对象
在上面的例子中,使用 onmessage 事件来获取消息,还可以使用其他事件:
事件 说明
onmessage 当接受到消息时运行脚本
onopen 当通往服务器的链接被打开时运行脚本
onerror 当发生错误时运行脚本
11、HTML5 语义元素
语义= 意义
语义元素 = 元素的意义
(1)、什么是语义元素?
一个语义元素能够清楚的描述其意义给浏览器和开发者。
无语义元素比如:<div> 和 <span> 无需考虑内容。
语义元素比如:<form>,<table>,<img> 清楚的定义了它的内容。
(2)、HTML5中新的语义元素
很多现有网站仍然使用 DIV+CSS 来布局页面,页面的所有内容都包含在 DIV 内,再使用 CSS 来指定各部分的样式,随便打开几个关于 H5 或者 CSS3 网站,打开调试工具,在 body 内也是一堆 DIV,大体结构如下:
#header 指定网页头部 #nav 指定网页导航栏 #main 指定主体内容 #footer 指定页脚
HTML5 提供了新的语义元素来明确一个 Web 页面的不同部分:
<header> 页面头部。
<nav> 页面导航栏。
<article> 独立的内容,内容本身必须是有意义的且必须是独立于文档的其余部分。
<section> 文档的某个区域,比如章节、头部、底部或者文档的其他区域。
<aside> 页面的侧边栏内容。
<figure> 独立的流内容,比如图像、图表、照片、代码等等。
<figcaption> 定义 <figure> 元素的标题。
下面的例子,是一个标准的 HTML5 页面布局:
HTML5 页面页面头部导航栏内容侧边栏页脚
(3)、新元素解析
<header> 标签描述了文档的头部区域。该元素可用于定义内容的介绍展示区域,在页面中可以使用多个 <header> 元素。
<nav> 标签定义导航链接的部分。该元素用于定义页面的导航链接部分区域,但是,不是所有的链接都需要包含在 <nav> 元素中。
<article> 标签定义独立的内容,该元素内容的潜在来源:论坛帖子、博客文章、新闻故事、用户评论等。
<section> 标签定义文档中的节,比如章节、页眉、页脚或文档中的其他部分。
根据 W3C HTML5 文档描述,section 包含了一组内容及其标题:
标题内容
<aside> 标签定义页面主区域内容之外的内容,比如侧边栏。该元素的内容应与主区域的内容相关。
<footer> 标签描述了文档或文档的底部区域,一个页脚通常包含文档的作者,著作权信息,链接的使用条款,联系信息等。
<figure> 标签规定独立的流内容,比如图像、图表、照片、代码等等。该元素的内容应该与主内容相关,如果被删除,则不应对文档流产生影响。
<figcaption> 标签定义 <figure> 元素的标题,该元素应该被置于 figure 元素的第一个或最后一个子元素的位置。
北京天安门广场
(4)、IE 低版本兼容
IE9+,Firefox,Chrome、Safari 和 Opera 都支持这些新元素,但是 IE8 及其更早版本并不支持,这些新元素不能作为父节点包裹子元素,并且不能应用 CSS 样式。
解决方法:使用 HTML5 Shiv Javascript 脚本来解决 IE 的兼容问题。