第一的:
<meta http-equiv="refresh" content="0" url="http://www.google.com"/>
第二:
<meta http-equiv="refresh" content="0;URL=http://www.google.com"/>
第一个似乎更理智,但不起作用,而第二个有效,但似乎格式不正确。
第一的:
<meta http-equiv="refresh" content="0" url="http://www.google.com"/>
第二:
<meta http-equiv="refresh" content="0;URL=http://www.google.com"/>
第一个似乎更理智,但不起作用,而第二个有效,但似乎格式不正确。
元标记http-equiv
实际上是一种将 HTTP 响应标头的 *equiv*alent 放入 HTML 页面的方法。HTTP 中的标头由字段名称和内容组成,因此第二个在这种情况下是正确的。
正如您所说,主要区别在于后者(通常)有效,而前者无效。前者也不符合任何 HTML 规范或草案;HTML中没有命名属性url
。(顺便说一下,采用 URL 值的属性的名称类似于href
和scr
。)
后者原则上在 HTML 规范和草案中更加模糊。HTML 4.01间接提到了这个结构,但没有给出确切的形式:“一些用户代理支持使用 META 在指定的秒数后刷新当前页面,并可以选择用不同的 URI 替换它。作者不应使用此技术将用户转发到不同的页面,因为这会使某些用户无法访问该页面。相反,应该使用服务器端重定向来完成自动页面转发。”</p>
但 HTML5 CR 更真实地详细描述了构造及其功能,并声明它符合要求。
从 HTML 的角度来看,content
属性的值只是一个字符串,它可能受制于其他规范中定义的规则。在这种情况下,奇怪的格式模仿了 HTTP 标头,该标头最初由 Netscape 引入,后来被浏览器广泛支持,但从未在 HTTP 规范中标准化。
根据W3 学校的说法(是的,我知道。根据一些无所不知的人来说,这不是最好的来源,就在这里),Meta 标签只有 5 个受支持的属性: