百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>html5教程> script标签在HTML中的作用有哪些?script标签中type属性的用途有
分享文章到:

script标签在HTML中的作用有哪些?script标签中type属性的用途有

发布时间:09/01 来源:未知 浏览: 关键词:
script标签在HTML中的作用是啥?script标签中type属性的用途是啥?本篇文章主要讲解了HTML Script标签用途的相关知识和script标签中的type属性用途是啥

HTML Script标签的相关知识及作用:

关于script这个经常使用的标签,你理解多少,这个script标签随着改善,增添了一些html5的东西,比方async 和 defer,crossorigin,for / event等。

正如你大概知道的,script 标签是用来指定在网页上施行哪个 JavaScript 的。Script 标签可以直接包括 JavaScript 代码,或者指向一个 JavaScript 外链 URL。

Script 标签依照它们显现的次序被施行,下面的代码很直不雅地说明了这一点:

<script>
  var x = 3;
</script>
<script>
  alert(x);
  // Will alert '3';
</script>

使用外链资源时加载次序没有那么直不雅,但仍然是成立的:

<script src="//typekit.com/fj5j4j3.js"></script>
<!-- 在Type套件已施行或超时此前,此第二足本不会施行。 -->
<script src="//my.site/script.js"></script>

假如你混合使用外链和内联的 JavaScript,这个规则一样适用。

这意味着假如你的网站有很慢的足本在页面较前部分被加载,你的网页加载就会被显著拖慢。这也意味着后加载的足本可以依靠先加载的足本。

页面元素在它此前的所有足本都加载完毕此前是不会施行渲染的。这意味着你可以你可以在页面加载此前在网页上做各种疯狂的事情,当然前提是你不在意因此而造成的机能问题。

然而这个规则不适用于你在网页加载完成之后通过 document.appendChild 之类的办法增加 script 标签到 DOM 中。这些标签会按照阅读器恳求处置完成的前后施行足本,不再包管加载次序。

当一个 script 标签被施行,在它此前的 HTML 元素可以拜访(但是在它之后的还不克不及用)

<html>
  <head>
    <script>
      // document.head is available
      // document.body is not!
    </script>
  </head>
  <body>
    <script>
      // document.head is available
      // document.body is available
    </script>
  </body>
</html>

你可以想象 HTML 解析器一个标签一个标签地拜访文档,当它解析到 script 标签时,立刻施行其中的 JavaScript。这意味着只要当开端标签显现在当前足本此前的 DOM 节点才可以在当前 JavaScript 中被拜访(通过 querySelectorALl,jQuery 等等)。

一个有用的推论是 document.head 在任何写在网页上的 JavaScript 几乎总是可用。document.body 只要当你将 script 标签写在 <body> 标签中或者它之后的时候才可用。

HTML5 增加了两个工具来操纵足本的施行。

async 表示“不消立刻施行它”。更详细地它表示:我不介意你在整个网页加载完成之后施行这个足本,把它放在其他足本施行之后。这关于统计剖析足原本说非常有用,由于页面上没有其他的代码需要依靠于统计足本施行。定义一个页面需要的变量或函数在 async 的代码中是不可的,由于你没有办法知道什么时候 async 代码将会被实际施行。

defer 表示“等候页面解析完成之后施行”。它大致等价于将你的足本绑定到DOMContentedLoaded 事件,或者使用 jQuery.ready。当这个代码被施行,DOM 中的一切元素都可用。不一样于 async,所有加了 defer 的足本将会依照它们显现在 HTML 页面中的次序施行,它只是延迟到 HTML 页面解析完毕后开端施行。

html中script标签中的type 属性的用途:

从历史上看(自 Netsacpe 2 产生起),在 script 标签上可否写上 type=text/javascript 没有什么关系。假如你通过 type 设定一个非 JavaScript 的 MIME 类型,阅读器不会施行它。当你想要定义你本人的说话时,这会很酷:

<script type="text/emerald">
  make a social network
    but for cats
</script>

这段代码实际施行结果由你本人决议,如:

<script>
  var codez = document.querySelectorAll('script[type="text/emerald"]');
  for (var i=0; i < codez.length; i++)
    runEmeraldCode(codez[i].innerHTML);
</script>

定义 runEmeraldCode 函数留给你们作为练习。

假如你有特殊的需要,你也可以重写页面上 script 标签的默许 type,办法是通过一个 meta 标签:

<meta http-equiv="Content-Script-Type" content="text/vbscript">

或者一个恳求返回一个 Content-Script-Type header。

可以用 crossorigin

虽然还没有完全被标准化,但是一些阅读器支撑 crossorigin 属性。根本的设法是,阅读器会限制对非同源资源的使用(同源资源是指雷同的和谈、hostname 乃至端口,例如: `http://google.com:80)。

这是为了防止你,例如,向你的竞争敌手网站发恳求,注销你的会员在对方网站的账号(这不好!)。这个问题牵扯到 script 标签虽然有点不测,但假如实现了 crossorigin,你只要加一个 handler 到window.onerror 事件上,就能在看操纵台上看到一些警告信息,提醒你引入了一个不该引入的外站足本。在平安的阅读器下,除非你指定 crossorigin 属性,不然加载外站足本不会出错。

crossorgin 不是一个奇妙的平安手段,它所做的只是让阅读器启用正常的 CORS 拜访检查,发起一个 OPTIONS 恳求并检查 Access-Control header。

html Script 标签和 innerHTML:

通过 DOM 动态增加到页面上的 script 标签会被阅读器施行:

var myScript = document.createElement('script');
myScript.textContent = 'alert("?")';
document.head.appendChild(myScript);

通过 innerHTML 动态增加到页面上的 script 标签则不会被施行:

document.head.innerHTML += '<script>alert("?")</script>';

为什么会是这样的缘由不是很肯定,但是它解决了一个小问题:“可否有一个方法让一个 script 标签在 Chrome 代码检查器中显示但不实际施行?”

【相关引荐】

HTML5中web是啥?web储备中的元素是什么?

HTML table属性你知道多少,进来理解一下?

以上就是script标签在HTML中的作用是啥?script标签中type属性的用途是啥?的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板