【问题标题】:How is the type attribute of tag a in html implemented?html中标签a的type属性是如何实现的?
【发布时间】:2012-05-08 23:34:03
【问题描述】:

W3C Schools 声明“type 属性指定链接文档的 MIME 类型”,并以<a href="http://www.w3schools.com" type="text/html">W3Schools</a> 为例。如果我将 text/html 更改为 application/zip accept 标头字段 not 已更改。

explanation in the specification 还声明该属性是“纯粹的建议”。也就是说,浏览器可以直接忽略它?

本以为该属性会反映在“accept”标头字段中。

【问题讨论】:

  • @robertc - 我猜网页知道链接末尾有哪些资源可用,因此接受标头可能成为浏览器支持的资源类型和类型的交集由链接指定。如果交叉点为空,则页面甚至无法将锚点显示为链接。否则,服务器可以将修改后的接受标头用于内容协商目的。浏览器不这样做,但理论上它是有用的。
  • 网址 www.example.org/data。如果请求 HTML,则显示 HTML 页面。如果请求 ZIP,则数据应表示为压缩的 ZIP。 HTML 页面包含一个指向 ZIP 表示的链接 (type="application/zip")。如果不指向不同的 URL(例如,“?zip”),这似乎是不可能的(即使使用 JavaScript - 请参阅stackoverflow.com/questions/7464665/…
  • @koppor,完全同意。为什么Accept 标头值不包含媒体类型令人费解。如果客户端不说它接受什么,服务器很难为客户端提供它可以处理的东西!

标签: html


【解决方案1】:

规范中没有说明 UA 在跟随链接时必须更改 Accept 标头以匹配 type 属性。它只是说 UA 不能依赖 type 来确定要检索的资源的类型。

【讨论】:

    【解决方案2】:

    type 属性(如果存在)给出链接资源的 MIME 类型。这纯粹是建议性的。该值必须是有效的 MIME 类型。用户代理不得认为类型属性具有权威性——在获取资源时,用户代理不得使用资源链接中包含的元数据来确定其类型。

    正如它所说,它纯粹是建议性的,用户代理不得认为它具有权威性。换句话说,它甚至不能保证它是正确的,它只是一个提示。我认为这纯粹是基于实用性,因为链接很快就会变得陈旧;链接不能指示链接到资源的内容。对于用户代理应该对属性做什么,没有其他规范。例如,用户代理可以使用它来直观地向用户指出该链接将(可能)指向 PDF 文件。我不知道现在这样做的用户代理。该属性没有任何其他指定用途,因此也不应更改Accept 标头。

    【讨论】:

      【解决方案3】:

      type 属性对于脚本和 HTML5 音频/视频非常重要。如果您通过 HTML5 JavaScript API 访问音频/视频(例如,当用户玩游戏时启动音频),如果浏览器无法播放指定为音频/源的任何文件,则 JavaScript 将严重失败视频节点。

      使用 JavaScript,您可以在尝试访问媒体之前检查浏览器是否能够播放媒体,但您不仅要知道 MIME 类型,还要知道媒体文件中使用的编解码器,而这无法可靠地猜到基于文件扩展名。

      这就是 type 属性发挥作用的地方,JavaScript 可以从 type 属性中获取该信息,然后查询浏览器是否能够播放该类型的媒体。

      当媒体播放时服务器发送的 MIME 类型仍然必须正确,您无法使用 type 属性来补偿服务器上不正确的 MIME 类型,无论是 HTML5 媒体还是任何其他标签使用该属性。

      【讨论】:

        猜你喜欢
        • 2016-03-31
        • 1970-01-01
        • 1970-01-01
        • 2016-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多