搜索
首页web前端html教程script标签在HTML中的作用是什么?script标签中type属性的用法是什么?

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 &#39;3&#39;;
</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 标签写在 6c04bd5ca3fcae76e30b72ad730ca86d 标签中或者它之后的时候才可用。

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(&#39;script[type="text/emerald"]&#39;);
  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(&#39;script&#39;);
myScript.textContent = &#39;alert("?")&#39;;
document.head.appendChild(myScript);

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

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

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

【相关推荐】

HTML5中web是什么?web存储中的元素有哪些?

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


以上是script标签在HTML中的作用是什么?script标签中type属性的用法是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何验证您的HTML代码?如何验证您的HTML代码?Apr 24, 2025 am 12:04 AM

HTML代码可以通过在线验证器、集成工具和自动化流程来确保其清洁度。1)使用W3CMarkupValidationService在线验证HTML代码。2)在VisualStudioCode中安装并配置HTMLHint扩展进行实时验证。3)利用HTMLTidy在构建流程中自动验证和清理HTML文件。

HTML与CSS和JavaScript:比较Web技术HTML与CSS和JavaScript:比较Web技术Apr 23, 2025 am 12:05 AM

HTML、CSS和JavaScript是构建现代网页的核心技术:1.HTML定义网页结构,2.CSS负责网页外观,3.JavaScript提供网页动态和交互性,它们共同作用,打造出用户体验良好的网站。

HTML作为标记语言:其功能和目的HTML作为标记语言:其功能和目的Apr 22, 2025 am 12:02 AM

HTML的功能是定义网页的结构和内容,其目的在于提供一种标准化的方式来展示信息。1)HTML通过标签和属性组织网页的各个部分,如标题和段落。2)它支持内容与表现分离,提升维护效率。3)HTML具有可扩展性,允许自定义标签增强SEO。

HTML,CSS和JavaScript的未来:网络开发趋势HTML,CSS和JavaScript的未来:网络开发趋势Apr 19, 2025 am 12:02 AM

HTML的未来趋势是语义化和Web组件,CSS的未来趋势是CSS-in-JS和CSSHoudini,JavaScript的未来趋势是WebAssembly和Serverless。1.HTML的语义化提高可访问性和SEO效果,Web组件提升开发效率但需注意浏览器兼容性。2.CSS-in-JS增强样式管理灵活性但可能增大文件体积,CSSHoudini允许直接操作CSS渲染。3.WebAssembly优化浏览器应用性能但学习曲线陡,Serverless简化开发但需优化冷启动问题。

HTML:结构,CSS:样式,JavaScript:行为HTML:结构,CSS:样式,JavaScript:行为Apr 18, 2025 am 12:09 AM

HTML、CSS和JavaScript在Web开发中的作用分别是:1.HTML定义网页结构,2.CSS控制网页样式,3.JavaScript添加动态行为。它们共同构建了现代网站的框架、美观和交互性。

HTML的未来:网络设计的发展和趋势HTML的未来:网络设计的发展和趋势Apr 17, 2025 am 12:12 AM

HTML的未来充满了无限可能。1)新功能和标准将包括更多的语义化标签和WebComponents的普及。2)网页设计趋势将继续向响应式和无障碍设计发展。3)性能优化将通过响应式图片加载和延迟加载技术提升用户体验。

HTML与CSS vs. JavaScript:比较概述HTML与CSS vs. JavaScript:比较概述Apr 16, 2025 am 12:04 AM

HTML、CSS和JavaScript在网页开发中的角色分别是:HTML负责内容结构,CSS负责样式,JavaScript负责动态行为。1.HTML通过标签定义网页结构和内容,确保语义化。2.CSS通过选择器和属性控制网页样式,使其美观易读。3.JavaScript通过脚本控制网页行为,实现动态和交互功能。

HTML:是编程语言还是其他?HTML:是编程语言还是其他?Apr 15, 2025 am 12:13 AM

HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增强WebevebDevelopment。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)