翻译正在进行中。

HTML script elements expose the HTMLScriptElement interface, which provides special properties and methods (beyond the regular HTMLElement object interface they also have available to them by inheritance) for manipulating the layout and presentation of <script> elements.

HTML脚本元素暴露HTMLScriptElement接口,它提供了特殊的属性和方法(超出了常规HTMLElement对象接口,他们也可以通过继承)操纵<脚本>元素的布局和演示。
 

Properties

Inherits properties from its parent, HTMLElement.

继承属性从其母,{ { domxref(“HTMLElement”)} }。
 

Name Type Description
type DOMString 代表了脚本的MIME类型。它反映了{ { htmlattrxref(“类型”、“脚本”)} }属性。如何解析奇异的编程语言,请阅读这篇文章。
src DOMString 代表了使用外部脚本资源的地址。它反映了{ { htmlattrxref(“src”、“脚本”)} }属性。
htmlFor DOMString 他htmlFor属性设置或返回的值的属性标签。属性指定的表单元素绑定到一个标签。
event DOMString HTML DOM事件允许JavaScript注册不同的事件处理程序的元素在一个HTML文档。
charset DOMString 代表外部脚本资源的字符编码。它反映了{ { htmlattrxref(“字符集”、“脚本”)} }属性。
async Boolean

async和defer属性值为bool,它用来说明script脚本应该如何执行。在没有src属性的情况下,async和defer属性可以不指定值。

使用该属性有三种模式可供选择,如果async属性存在,脚本将异步执行,只要它是可用的,如果async属性不存在,而defer属性存在,脚本将会在页面完成解析后执行,如果都不存在,那么脚本会在useragent解析页面之前被取出并立刻执行。

注意:这些属性的处理细节,主要是历史原因,有些重要的,涉及很多方面的HTML。因此实现需求的必要性分散在规范。这些描述这个处理的核心算法,但这些算法参考和引用的解析规则{ HTMLElement("脚本")} { }开始和结束标记在HTML中,在国外内容,并在XML中,规则的document . write()方法,处理脚本等。

延迟属性可以指定即使指定异步属性,导致遗留Web浏览器只支持推迟(而不是异步)回落推迟行为而不是同步阻塞是默认的行为。

defer Boolean
crossOrigin DOMString 是一个{ { domxref(DOMString)} },对应于歌珥设置这个脚本元素。有关详细信息,请参阅歌珥设置属性。这对脚本控制,从其他来源,获得错误信息是否会被暴露出来。
text DOMString

IDL属性内容的文本必须返回一个连接的所有文本节点的孩子{ { HTMLElement("脚本")} }元素(忽略任何其他节点如评论或元素),在树的顺序。设置,它必须采取行动一样textContent IDL属性。

注意:当插入使用document . write()方法,{ { HTMLElement("脚本")} }元素执行(通常是同步),但当插入使用innerHTML和outerHTML属性,他们不执行。

Methods

No specific method; inherits properties from its parent, HTMLElement.

没有具体的方法;继承属性从其母,{ { domxref(“HTMLElement”)} }。
 

例子

动态导入脚本

让我们创建一个名为importScript的函数(url(onloadFunction])能够在一个文档中导入新的脚本创建一个{ HTMLElement("脚本")} { }节点立即在{ { HTMLElement("脚本")} }哪些主机下面的代码(通过{ { domxref(document.currentScript)} })。这些脚本将异步执行。更多细节,请参见推迟和异步属性。

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.onerror = loadError;
  if (fOnload) { oScript.onload = fOnload; }
  document.currentScript.parentNode.insertBefore(oScript, document.currentScript);
  oScript.src = sSrc;
}

…the same thing, but appending the new scripts as last childs of the <head> tag, instead of appending them immediately before the document.currentScript element:

…同样的事情,但附加新脚本的最后一个孩子的{ { HTMLElement(“头”)} }标记,而不是附加他们立即在{ { domxref(document.currentScript)} }元素:
 

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.onerror = loadError;
    if (fOnload) { oScript.onload = fOnload; }
    oHead.appendChild(oScript);
    oScript.src = sSrc;
  }

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

示例用法:

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

规范

Specification Status Comment
HTML Living Standard
HTMLScriptElement
Living Standard No change from HTML5.
HTML 5.1
HTMLScriptElement
Recommendation  
HTML5
HTMLScriptElement
Recommendation The following properties are now obsolete: htmlFor,.
Document Object Model (DOM) Level 2 HTML Specification
HTMLScriptElement
Obsolete No change from Document Object Model (DOM) Level 1 Specification.
Document Object Model (DOM) Level 1 Specification
HTMLScriptElement
Obsolete Initial definition.

浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 1.0 1.0 (1.7 or earlier) (Yes) (Yes) (Yes)
async (Yes) 3.6 (1.9.2) 10 未实现 (Yes)
defer (Yes) 3.5 (1.9.1)

4 (follows a spec of its own)

10 (by the spec)

未实现 (Yes)
crossOrigin WebKit bug 81438 13 (13) bug 696301 未实现 未实现 WebKit bug 81438
Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) 1.0 (1.0) (Yes) (Yes) (Yes)
async (Yes) 1.0 (1.0) 未实现 ? (Yes)
defer (Yes) 1.0 (1.0) 未实现 ? (Yes)
crossOrigin ? ? ? ? ?

Gecko-specific notes

  从Gecko2.0 { { geckoRelease(" 2.0 ")} },插入脚本创建的元素通过调用document.createElement(“脚本”)到DOM不再强制执行插入顺序。这种变化让Gecko正确遵守HTML5规范。让script-inserted外部脚本执行的插入顺序,设置异步属性为false。
  

See also

文档标签和贡献者

此页面的贡献者: anchen, wenzi556, qqmmgg123
最后编辑者: anchen,