小tip: 使用meta实现页面的定时刷新或跳转

这篇文章发布于 2015年03月11日,星期三,23:42,归类于 CSS相关。 阅读 62014 次, 今日 5 次 9 条评论

 

一、开篇小广告

今天在团队官博发了篇文章,名为“经验分享:多屏复杂动画CSS技巧三则”,大家如有兴趣,可以去围观下,点个赞,或评论什么的。

二、meta源信息功能之页面定时跳转与刷新

几乎所有的网页头部都有<meta>源信息。除了我们常用的定义编码、关键字(name=”keywords”)、描述(name=”description”)(for SEO),还可以定义视区大小、缩放比例等(for 移动端),如下:

<meta name="viewport" content="width=device-width,initial-scale=1.0">

以及,定义网页的过期时间,Cookie的过期时间等等。

文本要介绍的内容,科科,跟上面都没关系。哦,抱歉,都有关系,只是名称我故意没提到。主角嘛,总要最后闪亮登场!

主角闪亮登场

就是我们网页平时跳转,还可以使用<meta>实现,下面几个典型代码示例:

  1. <meta http-equiv="refresh" content="5">

    这个表示当前页面每5秒钟刷一下,刷一下~

  2. <meta http-equiv="refresh" content="2; url='/'">

    这个表示当前页面2秒后跳到首页~

  3. <meta http-equiv="refresh" content="0; url='http://www.qq.com/'">

    页面直接跳转到腾讯网~

所以,当我们下次遇到“登录成功,正在跳转到您之前访问页面……”的时候,可以使用<meta>的这个refresh刷新,跳转功能,可以说是成本最低的。

您可以狠狠地点击这里:meta与当前页面定时刷新Demo

定时刷新截图

上面Demo效果就是上面第1个示例代码效果。

根据我的测试,此特性包括IE7在内的浏览器都是支持的。

三、问题来了:为何meta跳转不火呢?

大家可以看到,meta跳转,使用方便,不用写JS,不用会后台代码,定时跳转刷新什么的玩得照样很溜,而且兼容性好,为啥总感觉不温不火,很少看见有人提及呢?

新晋的小伙伴不知有没有听过这么一个词,叫做“万恶的IE6年代”。

据说,当年,这一批老旧的浏览器,问题很多,其中就有对meta2个小小的不友好。我也是听说,不一定准确。坊间是这么传闻的:

  • 时间设为0的跳转,有时候页面会闪一下;
  • 跳转到其他页面,浏览器后退按钮是不能用的;

但是啊,现在是什么年代啊,监狱风云都拍到第二季了,这些老问题,我觉得就可以忽略不计了。

不妨大胆试试meta跳转,好好利用下浏览器的原生特性,说不定就会发现比什么JS跳转之流用得更开心。

欢迎反馈,欢迎交流,感谢阅读!

(本篇完)

分享到:


发表评论(目前9 条评论)

  1. Apparition2018说道:

    “登录成功,正在跳转到您之前访问页面……”
    什么意思呢?难道还要登录验证成功后跳转到一个写了的页面,再在上面写我们要去的目标页面?

  2. ppp说道:

    www<meta url

  3. ppp说道:

    挖坟,才知道刷新还能设时间

  4. 木秀说道:

    这个技术好像在浏览器远古时期还是很火的,但是大量的无良网站过度滥用导致用户体验不好。并且搜索引擎不能识别 js 却可以识别meta标签,如果用这种方法进行跳转的话可能会被搜索引擎认为是在恶意欺骗用户吧?不是很清楚SEO怎么处理这种情况。

  5. jaingjunzhang说道:

    有趣。用meta源标签跳转,不仅要修改dom,速度也不JS快,有的浏览器还有限制。

  6. 微笑说道:

    之前在项目实践过,对比meta和JS,meta确实在实现成本上比较低,但也相对JS来说,跳转时会等待很长的时间,有时候你看着白页很久才会跳转到你想要的地址

  7. 文艺青年说道:

    这个是老早之前的知识点了~

  8. 花花世界说道:

    为何meta跳转不火呢?
    对于现在IE6已经被淘汰的现状来看,原因已经不能再怪罪于“万恶的IE6年代”。

    归根原因是因为Firefox默认是禁用autorefresh的。
    可以按一下步骤启用autorefreh:

    1). 在地址栏中输入 about:config;

    2). 一条消息框出现:点击接受;

    3). 在搜索框中,输入blockautorefresh;

    4). 将accessibility.blockautorefresh从false改为true