HTMLScriptElement - Web API 接口参考 编辑

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

Properties

从其父类中继承的属性, HTMLElement
 

NameTypeDescription
typeDOMString代表了脚本的MIME类型。它反映了type 属性。如何解析奇异的编程语言,请阅读这篇文章。
srcDOMString代表了使用外部脚本资源的地址。它反映了src属性。
htmlFor DOMString他htmlFor属性设置或返回的值的属性标签。属性指定的表单元素绑定到一个标签。
eventDOMStringHTML DOM事件允许JavaScript注册不同的事件处理程序的元素在一个HTML文档。
charsetDOMString代表外部脚本资源的字符编码。它反映了charset 属性。
asyncBoolean

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

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

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

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

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

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

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

Methods

没有具体的方法;属性从其父类继承, HTMLElement

例子

动态导入脚本

让我们创建一个名为importScript的函数,它能够在一个文档中导入新的脚本,创建一个<script> 节点,并立即插入到宿主<script> 之前 (通过 document.currentScript 可以获取宿主script标签)。这些脚本将异步执行。更多细节,请参见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.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:

与上面大致相同,但有一点不同的是 新创建的script标签插入到了<head>标签的的最后,而不是插入到了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."); });

规范

SpecificationStatusComment
HTML Living Standard
HTMLScriptElement
Living StandardNo change from HTML5.
HTML 5.1
HTMLScriptElement
Recommendation 
HTML5
HTMLScriptElement
RecommendationThe following properties are now obsolete: htmlFor,.
Document Object Model (DOM) Level 2 HTML Specification
HTMLScriptElement
ObsoleteNo change from Document Object Model (DOM) Level 1 Specification.
Document Object Model (DOM) Level 1 Specification
HTMLScriptElement
ObsoleteInitial 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!
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support1.01.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 8143813 (13) bug 696301未实现未实现WebKit bug 81438
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari 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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:53 次

字数:14590

最后编辑:7 年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文