外部スクリプト資源

script 要素 src 属性 (HTML)

[44] script 要素src 属性は、 外部スクリプト資源URL を指定するものです。 この属性が指定されると、スクリプト要素内容ではなく、 指定された URL で取得できるものとなります。

仕様書

意味

[2] script 要素古典スクリプトモジュールスクリプトの場合には、 外部スクリプト資源を参照することができます。 src 属性はその外部スクリプトURL を指定するものです。 >>1

属性値

[3] src 属性値は、 valid non-empty URL potentially surrounded by spaces でなければなりません >>1

[46] HTML4 時代のこの属性の値は %URI です。 SGML 的には CDATA です。

[5] 普通は素片識別子は使いませんが、 スクリプト言語によっては使い道があるかもしれません。 少なくても使ってはいけない理由はないでしょう。

[6] 使用実績のある scheme は、 http:, https: くらいでしょうか。探せば ftp:, cid: もあるかもしれませんし、ブラウザは実装していそうです。 chrome:resource: など UA 依存の特殊な scheme に対応しているものもあるでしょう。

[47] この属性は省略可能です。省略すると script 要素の内容がスクリプトとみなされます。逆に指定すると内容は無視されます。 HTML 4 18.2.1

[7] src 属性を省略して、内容は空であるとしても、 HTML 的には空のスクリプトであるというだけで問題ないはずです。 しかし、スクリプト言語によっては、 まったくの空ではいけないというものももしかするとあるかもしれません。 普通は空でも何も行われないだけです。ただ、 空なら既定の動作をするという変なスクリプト言語もあるかもしれません。

外部スクリプト資源の制約

[4] script 要素src 属性が参照する外部スクリプト資源は、 古典スクリプトなら JavaScriptScriptモジュールスクリプトなら JavaScriptModule の制約に従わなければなりません >>1

文脈

[9] script 要素の種別がデータブロックの時は、 src 属性を使ってはなりません >>1

処理

[12] script外部スクリプトのfetchを参照。

[14] script 要素要素への src 属性の追加は、次のようにしなければなりません >>140

  1. [15] 要素影を含む文書中にあり、 「構文解析器挿入」フラグが設定されていなければ
    1. [16] 要素についてスクリプトを準備します。

[17] src 属性の設定については、 script 要素の項も参照。

[135] なお、初回処理時の値が使われるので、動的に変更しても、意味を持ちません >>140

HTMLScriptElement インターフェイス src 属性

[13] HTMLScriptElement インターフェイスsrc IDL属性は、 src 内容属性反映しなければなりません >>140。これはURLとして反映するものです。

関連

[8] script 要素の他の属性要素内容の制約との関係や処理方法については、 script を参照。

[11] charset 属性は、 src 属性がないとき指定してはなりません >>10

歴史

登場

[21] src 属性に対応しているのは NN 3.0 以降だそうです。

[52] >>21 つまり Netscape Navigator 2 では src を指定しても内容を実行してしまいます。 これを使って版で動作を分けるという方法が使われたこともありました。 (名無しさん [sage])

[53] Netscape Navigator 3で導入されました。

この当時は、languageまたはsrcのいずれかが指定されていなければならず、srcが指定されている時languageはあってもなくてもよいとされていました。

また、srcの指定する資源については、JavaScriptであることを示すために媒体型application/x-javascript札付けしなければならないとされています。

[23] Welcome to Netscape Navigator 3.0, , https://web.archive.org/web/20020630200918/http://wp.netscape.com/eng/mozilla/3.0/relnotes/windows-3.0.html#JavaScript

HTML4

[45] 仕様書:

メモ

[54] 素片識別子スクリプト引数を与えるために使おうとする人がいます。 (名無しさん 2006-08-08 11:51:19 +00:00)

[56] Sprinkle Javascript library by Jon Davis (2007-09-14 15:50:15 +09:00 版) http://home.sprinklejs.com:880/

[84] Add <script type="module"> and module resolution/fetching/evaluation · whatwg/html@cd1a9fb ( 版) https://github.com/whatwg/html/commit/cd1a9fb1e83f7d0bc30be8b34ecdaf444a0b19a4

[85] URLs are parsed and produce records · whatwg/html@30bc255 ( 版) https://github.com/whatwg/html/commit/30bc2557105ad62881ec9670f253febbc9761b44

[18] Execute <script> in shadow trees · whatwg/html@caf203f ( 版) https://github.com/whatwg/html/commit/caf203fd4d9a5047d1ff2edad2290d53e21368ba

[19] (Re)disallow script defer/async attributes w/o src (sideshowbarker著, ) https://github.com/whatwg/html/commit/3c5180a08f90a375c64f8191f32f8c7ddfec0ba3

[20] Fix authoring guidance to allow async="" on inline module scripts (domenic著, ) https://github.com/whatwg/html/commit/271f19c34786db04a17c16c24807a33113894a68

[22] async="" should be allowed on inline module scripts · Issue #3319 · whatwg/html () https://github.com/whatwg/html/issues/3319