为什么Chrome不使用元刷新重定向

时间:2014-03-21 06:42:15

标签: html google-chrome redirect meta

我使用的应用程序有一个PL / SQL包,用于创建页面并使用函数创建META标记。<​​/ p>

它创建一个带有META标记的网页,如下所示:

 <META HTTP-EQUIV="Refresh" NAME="Refresh" CONTENT="1; URL=PaymentSubmit.html">

问题是Chrome不喜欢NAME =&#34;刷新&#34;属性。虽然它在IE和Firefox中正确地重定向,但它不会重定向页面

如果我删除了NAME属性,那么它看起来像这样适用于所有浏览器:

 <META HTTP-EQUIV="Refresh" CONTENT="1; URL=PaymentSubmit.html">

这里发生了什么?我找不到MET3重定向的W3C标准,那么每个浏览器是否都有自己的规则?我不确定它是否在Chrome中有效,但由于我从未听过任何错误报告,因此我认为它曾经在Chrome中运行。

任何人都有类似的问题吗?

由于

3 个答案:

答案 0 :(得分:12)

如果您查看the w3c wiki,可以找到以下引用:

  

必须指定其中一个名称,http-equiv和charset属性。

这意味着设置了namehttp-equiv属性并不是有效的HTML。

阅读this W3C's HTML and XHTML Techniques test on meta refresh

  

查找文档中的所有元元素。对于每个元素,请检查   如果它包含属性http-equiv,其值为“refresh”   (不区分大小写)和数字更大的content属性   比0后跟;'URL = anyURL'(其中anyURL代表URI   应该替换当前页面。)

其他浏览器的行为没有错,但chrome更严格。

关于正确行为的

更多细节 - 以及有效参考资料 - 可在http://www.w3.org/TR/html5/document-metadata.html#attr-meta-http-equiv-refresh

获取

答案 1 :(得分:10)

至于浏览器支持:

即使在IE6中也支持<meta>刷新

要使用的语法是:

在5秒后放置在<head>内以刷新页面:

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

5秒后重定向到http://example.com/

<meta http-equiv="refresh" content="5; url=http://example.com/">

立即重定向到http://example.com/

<meta http-equiv="refresh" content="0; url=http://example.com/">

如果您打算支持javascript停用程序(我不认为你应该这样做:)

执行此操作:<noscript><meta http-equiv="refresh" content="0; url=url here"></noscript>

它不是HTTP标准的一部分。

然而,还有其他选择:

要在5秒后刷新页面,请执行以下操作:

<body onload="javascript:setTimeout(function(){ location.reload(); },5000);">

如果您想在5秒后重定向,请执行以下操作:

<body onload="javascript:setTimeout(function(){ window.location = 'http://example.com';},5000);">

如果您想立即重定向:

<body onload="javascript:window.location='http://example.com'">

但是没有任何替代javascript禁用程序( yippee !!

结论:

所以,我的建议是,使用我的javascript替代品,因为它们将被替换。

<meta>刷新标签可能会在未来几年停止使用。

更多阅读:http://en.wikipedia.org/wiki/Meta_refresh

答案 2 :(得分:2)

对于<META标记,Microsoft已发布了特定的指南:

  

Page and site guidelines for SEO

具体来说,对于<meta http-equiv="refresh">元素,Microsoft声明如下:

  

页面重定向应提供包含新页面位置的消息以及用户阅读消息的足够时间。超时期限少于五秒的网页重定向可能会导致搜索引擎排名降低。

     

要重定向页面,请考虑使用HTTP重定向。 HTTP重定向更有可能将旧页面的权限转移到新页面。

就个人而言,我建议您使用301 Redirect而不是<meta刷新标记。在PHP中,您可以执行以下操作:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.yourdomain.com/newpage");
?>

此方法优于<meta刷新,因为通常301重定向包括资源移动到的地址。 Web浏览器通常会自动跟踪301重定向到新位置,而无需用户操作。

根据301 Redirect的{​​{3}}定义,它甚至可以保留旧职位:

  

每当将网站移动到新的域名(URL)时,都应使用301重定向,以便搜索引擎能够快速更改其内容,并且理论上保留搜索引擎在该网站上的排名。以前的域名。

这一切都与许多黑幕网站使用<meta刷新打开不需要的网站(垃圾邮件/广告等)这一事实相符。因此,我会得出结论,刷新元标记应该

对于其他元标记,请阅读以下内容:some

请记住,并非所有元标记都至关重要;例如,谷歌称18 meta tags every webpage should have

但请记住:拥有,而不是需要,而不是需要,而不是拥有它是

请勿使用<META refresh;)