--- title: HTMLScriptElement slug: Web/API/HTMLScriptElement translation_of: Web/API/HTMLScriptElement ---

{{ApiRef}}

DOMの ScriptオブジェクトはHTMLScriptElement (または {{ HTMLVersionInline(4) }} HTMLScriptElement)インターフェイスに具現化されます.それは通常のelementオブジェクトインターフェイスに加えて(継承によって利用可能),{{ HTMLElement("script") }} 要素のレイアウトおよび表現を扱う特別なプロパティとメソッドを提供します.

プロパティ

親である {{domxref("HTMLElement")}}からプロパティを継承しています.

Name Type Description
type {{domxref("DOMString")}} スクリプトのMIME typeを表します.これは{{htmlattrxref("type","script")}}属性を反映します.
src {{domxref("DOMString")}}

使用される外部スクリプトリソースのアドレスを表します.これは {{htmlattrxref("src","script")}}属性を反映します.

htmlFor {{obsolete_inline}} {{domxref("DOMString")}} [Description missing]
event{{obsolete_inline}} {{domxref("DOMString")}} [Description missing]
charset {{domxref("DOMString")}} 外部スクリプトリソースの文字エンコードを表します.これは{{htmlattrxref("charset","script")}}属性を反映します.
async {{domxref("Boolean")}}

asyncdefer属性はboolean属性です.スクリプトがどのように実行されるべきかを示します. defer および async 属性は,src 属性が無ければ指定してはならない.

これら2つの属性値を用いて選択可能な3つのモードがあります.async属性があれば,スクリプトは可能な限り非同期的に実行されます.async属性が無くdefer属性があれば. スクリプトはページのパースが完了した時点で実行されます.両方の属性があれば,スクリプトはユーザーエージェントによるページのパース完了を待つこと無く,フェッチ後,直ちに実行されます.

注記: これらの属性の正確な処理の詳細は,大部分が歴史的な理由により,幾分複雑でHTMLの様々な局面に関連しています.従って,実装の要件は,仕様の至る所に散らばっている必要性によります.These algorithms describe the core of this processing, but these algorithms reference and are referenced by the parsing rules for {{ HTMLElement("script") }} start and end tags in HTML, in foreign content, and in XML, the rules for the document.write() method, the handling of scripting, etc.

The defer attribute may be specified even if the async attribute is specified, to cause legacy Web browsers that only support defer (and not async) to fall back to the defer behavior instead of the synchronous blocking behavior that is the default.

defer {{domxref("Boolean")}}
crossOrigin {{experimental_inline}} {{domxref("DOMString")}} Is a {{domxref("DOMString")}} that corresponds to the CORS setting for this script element. See CORS settings attributes for details. It controls, for scripts that are obtained from other origins, whether error information will be exposed.
text {{domxref("DOMString")}}

IDLのtext属性は,すべてのテキストノード(Text nodes)内容の連結を返さなければなりません.(コメントや要素のような他のノードを無視すれば)テキストノードは,木構造(tree)上の順序でscript要素の子要素です.設定上,これはIDLのtextContent属性と同様に機能せねばなりません.

注記:  document.write() メソッドを用いて, {{HTMLElement("script") }} 要素を挿入した時,実行されます(典型的には同期的に).しかし,  innerHTML and outerHTML 属性を用いて挿入した場合,結局何も実行されません.

メソッド

固有のメソッドはありません;親である, {{domxref("HTMLElement")}}から継承しています.

例#1: スクリプトを動的にインポートする

新しいスクリプトをドキュメント内にインポート可能にするためimportScript(url[, onloadFunction])と名付けた関数を生成しましょう.インポートはドキュメントの(既存の){{ HTMLElement("script") }}の直前に(新たな){{ HTMLElement("script") }}ノードを生成して行ないます.既存の{{ HTMLElement("script") }}は,下記のコード({{domxref("document.currentScript")}}通じて取得)を提供するものです.これらのスクリプトは非同期的に実行されます.詳細はdeferおよびasyncプロパティを参照.

function loadError (oError) {
  throw new URIError("The script " + oError.target.src + " is not accessible.");
}

function importScript (sSrc, fOnload) {
  var oScript = document.createElement("script");
  oScript.type = "text\/javascript";
  oScript.src = sSrc;
  oScript.onerror = loadError;
  if (fOnload) { oScript.onload = fOnload; }
  document.currentScript.parentNode.insertBefore(oScript, document.currentScript);
}

同じことだがスクリプトを{{domxref("document.currentScript")}}要素の直前に加える代わりに,{{ HTMLElement("head") }} タグの末尾の子として加えています. 

var importScript = (function (oHead) {

  function loadError (oError) {
    throw new URIError("The script " + oError.target.src + " is not accessible.");
  }

  return function (sSrc, fOnload) {
    var oScript = document.createElement("script");
    oScript.type = "text\/javascript";
    oScript.src = sSrc;
    oScript.onerror = loadError;
    if (fOnload) { oScript.onload = fOnload; }
    oHead.appendChild(oScript);
  }

})(document.getElementsByTagName("head")[0]);

使用法:

importScript("myScript1.js");
importScript("myScript2.js", /* onload 関数: */ function () {
alert("You read this alert because the script \"myScript2.js\" has been correctly loaded."); });

仕様

仕様 地位 コメント
{{SpecName('HTML WHATWG', "scripting-1.html#the-script-element", "HTMLScriptElement")}} {{Spec2('HTML WHATWG')}} No change from {{SpecName("HTML5 W3C")}}.
{{SpecName('HTML5 W3C', "scripting-1.html#the-script-element", "HTMLScriptElement")}} {{Spec2('HTML5 W3C')}} The following properties are now obsolete: htmlFor,.
{{SpecName('DOM2 HTML', 'html.html#ID-81598695', 'HTMLScriptElement')}} {{Spec2('DOM2 HTML')}} No change from {{SpecName("DOM1")}}.
{{SpecName('DOM1', 'level-one-html.html#ID-81598695', 'HTMLScriptElement')}} {{Spec2('DOM1')}} Initial definition.

ブラウザ互換性

{{Compat("api.HTMLScriptElement")}}

参考