【问题标题】:Difference between SRC and HREFSRC和HREF之间的区别
【发布时间】:2011-03-24 15:32:19
【问题描述】:

SRCHREF 属性用于包含一些外部实体,例如图像、CSS 文件、HTML 文件、任何其他网页或 JavaScript 文件。

SRCHREF 之间有明显的区别吗?何时何地使用SRCHREF?我认为它们不能互换使用。

我在下面给出几个使用这些属性的例子:

  • 要引用 CSS 文件:链接标签内的href="cssfile.css"
  • 引用 JS 文件:src="myscript.js" 在脚本标签内。
  • 要引用图像文件:src="mypic.jpg" 在图像标签内。
  • 要引用另一个网页:href="http://www.webpage.com" 在锚标记内。

【问题讨论】:

  • 感谢大家的投入。所以看起来这两者之间没有明显的区别。我想等待更多的时间来获得更多的回应。 Oded 的观察在我看来有些可接受。
  • 两者之间有区别。我已经详细地写了我的答案来解释这一点。

标签: html


【解决方案1】:

注意:考虑到规格的变化,@John-Yin 的 answer 更合适。


是的。 srchref 之间有区别,它们不能互换使用。我们将 src 用于 replaced 元素,而 href 用于建立引用文档和外部资源之间的关系。

href(超文本参考)属性指定 Web 资源的位置,从而定义当前元素(在锚点 a 的情况下)或当前文档(在 @ 的情况下)之间的链接或关系987654326@) 以及此属性定义的目标锚点或资源。当我们写:

<link href="style.css" rel="stylesheet" />

浏览器知道这个资源是一个样式表,页面的处理解析没有暂停(渲染可能会暂停,因为浏览器需要样式规则来绘制并渲染页面)。它类似于将 css 文件的内容转储到 style 标记内。 (因此建议使用link 而不是@import 将样式表附加到您的html 文档。)

src(来源)属性只是将资源嵌入到当前文档中元素定义的位置。例如。当浏览器发现

<script src="script.js"></script>

页面的加载和处理会暂停,直到浏览器获取、编译和执行文件。它类似于将 js 文件的内容转储到 script 标记内。 img 标签的情况类似。它是一个空标签,应该包含在其中的内容由src 属性定义。浏览器暂停加载,直到它获取并加载图像。 [iframe 也是如此]

这就是为什么建议在底部(&lt;/body&gt; 标签之前)加载所有 JavaScript 文件的原因


更新:请参阅 @John-Yin 的 answer,了解有关如何按照 HTML 5 规范实施的更多信息。

【讨论】:

  • 感谢您的 Apnerve。这对我来说是个新闻。
  • 这些标签在多大程度上影响速度?
  • @expiredninja src 通常串行加载文件,而href 并行加载文件。因此,当资源被串行加载时,感知的加载时间会增加。
  • @Freek 是的。外部 CSS 引用会阻止 呈现 而不是 解析 以避免在大多数现代浏览器中出现 FOUC(无样式内容的 Flash)。
  • 更新了replaced element docs的链接。
【解决方案2】:

apnerve 的回答在 HTML 5 出来之前是正确的,现在有点复杂了。

例如,根据 HTML 5 规范,script 元素有两个全局属性,它们改变了src 属性的作用方式:asyncdefer。这些改变了脚本(嵌入内联或从外部文件导入)的执行方式。

这意味着可以使用这些属性选择三种可能的模式:

  1. async 属性存在时,脚本将在可用时立即异步执行。
  2. async 属性不存在但defer 属性存在时,则在页面完成解析后执行脚本。
  3. 如果两个属性都不存在,则在用户代理继续解析页面之前立即获取并执行脚本。

详情请见HTML 5 recommendation

我只是想为偶尔访问此主题的人更新一个新答案。一些答案应该由stackoverflow和我们每个人检查和存档。

【解决方案3】:

我认为&lt;src&gt; 向页面添加了一些资源,&lt;href&gt; 仅用于提供资源链接(不将资源本身添加到页面)。

【讨论】:

    【解决方案4】:

    HREF:是对当前页面信息的REF引用即页面样式的css信息或指向另一个页面的链接。页面解析没有停止。

    SRC:是一个要添加/加载到页面的 reSOURCE,就像在图像或 javascript 中一样。根据 coded 属性,页面解析可能会停止。这就是为什么最好在结束正文标记之前添加脚本,这样页面渲染就不会被阻止。

    【讨论】:

      【解决方案5】:

      简单定义

      SRC : (Source). To specify the origin of (a communication); document:     
      
      HREF : (Hypertext Reference). A reference or link to another page, document...
      

      【讨论】:

      • 所以引用没有指定来源?
      【解决方案6】:

      SRC(Source) -- 我想自己加载这个资源。

      例如:

      Absolute URL with script element: <script src="http://googleapi.com/jquery/script.js"></script>   
      
      Relative URL with img element : <img src="mypic.jpg">
      

      HREF(Hypertext REFerence) -- 我想为其他人参考这个资源。

      例如:

      Absolute URL with anchor element: <a href="http://www.google.com/">Click here</a>
      
      Relative URL with link element: <link href="mystylesheet.css" type="text/css">
      

      Courtesy

      【讨论】:

        【解决方案7】:

        一个简单的定义

        • SRC:如果一个资源可以放在body标签内(对于图片、脚本、iframe、frame)
        • HREF:如果资源不能放在body标签内,只能链接(对于html,css)

        【讨论】:

          【解决方案8】:

          从第三周开始:

          当 A 元素的 href 属性为 set,元素定义了一个源 可能是链接的锚点 由用户激活以检索 网络资源。源锚是 A 实例的位置和 目标锚点是 Web 资源。

          来源:http://www.w3.org/TR/html401/struct/links.html

          此属性指定位置 的图像资源。示例 广泛认可的图像格式 包括 GIF、JPEG 和 PNG。

          来源:http://www.w3.org/TR/REC-html40/struct/objects.html

          【讨论】:

            【解决方案9】:

            您应该记住何时使用所有人,仅此而已
            href 与链接一起使用

            <a href="#"></a>
            <link rel="stylesheet" href="style.css" />
            

            src 用于脚本和图像

            <img src="the_image_link" />
            <script type="text/javascript" src="" />
            

            url 一般用于 CSS 中包含某些内容,例如添加背景图片

            selector { background-image: url('the_image_link'); } 
            

            【讨论】:

              【解决方案10】:

              浏览 HTML 5.1 文档后(2016 年 11 月 1 日):


              第 4 部分(HTML 的元素)

              第 2 章(文档元数据)

              第 4 节(链接元素)指出:

              链接的目的地由href 属性给出,该属性必须存在并且必须包含可能被空格包围的有效非空 URL。如果href 属性不存在,则该元素没有定义链接。

              不包含src 属性...

              witch 是合乎逻辑的,因为它是一个链接。


              第 12 章(脚本)

              第 1 节(脚本元素)指出:

              经典脚本可以内嵌嵌入,也可以使用src 属性从外部文件导入,如果指定,则提供要使用的外部脚本资源的 URL。如果指定了src,它必须是一个可能被空格包围的有效非空 URL。内联脚本元素的内容,或外部脚本资源,必须符合 JavaScript 规范对经典脚本的脚本制作要求。

              它甚至没有提到href 属性...

              这表示在使用脚本标签时始终使用src 属性!!!


              第 7 章(嵌入内容)

              第 5 节(img 元素)

              srcsrcset 属性给出的图像,以及任何先前同级源元素的srcset 属性(如果父元素是picture 元素)是嵌入内容。

              也没有提到href 属性...

              这表明当使用img标签时,src属性也应该被使用......


              Reference link to the W3C Recommendation

              【讨论】:

                【解决方案11】:

                如果您在谈论 HTML4,它的list of attributes 可能会帮助您了解其中的细微之处。它们不可互换。

                【讨论】:

                  【解决方案12】:

                  它们不可互换 - 每个都在不同的元素上定义,如 here 所示。

                  它们确实具有相似的含义,因此这是不一致的。我认为主要是由于不同供应商开始实施不同的标签,然后将其纳入规范以避免破坏向后兼容性。

                  【讨论】:

                  • 没有。它们没有相似的含义,也不是不一致。 src 标签将资源添加到页面,而href 仅提供资源链接并与文档建立关系。
                  【解决方案13】:

                  它们没有相似的含义。 'src' 表示浏览器应获取的资源作为当前页面的一部分。 HREF 表示用户请求时要获取的资源。

                  【讨论】:

                  • 不一定:&lt;link href="foo.css" rel="stylesheet" type="text/css"&gt;
                  • @EJP 是正确的,只是 href 表示如果 user-agent 请求要获取的资源。样式表作为当前文档的一部分获取。
                  【解决方案14】:

                  我同意 apnerve 关于区别的说法。但在 css 的情况下,它看起来很奇怪。由于 css 也通过浏览器下载到客户端。它不像指向任何特定资源的锚标记。所以使用 href 对我来说似乎很奇怪。即使它没有与页面一起加载,仍然没有该页面看起来也不完整,因此它不仅仅是关系,而是类似资源,而资源又引用了许多其他资源,如图像。

                  【讨论】:

                  • 当您认为CSSHTML 文档的一部分时,您可以继续使用style 标签和@import 规则。它可能会对性能产生影响,但在这种情况下是合理的。
                  【解决方案15】:

                  src 用于将该资源添加到页面,而 href 用于从该页面链接到特定资源。

                  当您在网页中使用时,浏览器会看到它是一个样式表,因此在并行下载样式表时继续页面渲染。

                  当您在网页中使用时,它会告诉浏览器在该位置插入资源。所以现在浏览器必须获取 js 文件然后加载它。直到浏览器完成加载过程,页面呈现过程才会停止。这就是为什么 YUI 建议在网页最底部加载 JS 文件的原因。

                  【讨论】:

                    猜你喜欢
                    • 2012-08-15
                    • 2017-04-10
                    • 2013-02-25
                    • 2013-04-29
                    • 1970-01-01
                    • 2013-01-26
                    • 1970-01-01
                    • 1970-01-01
                    • 2014-09-25
                    相关资源
                    最近更新 更多