1. script元素

向HTML中插入JavaScript的主要方法,就是使用script标签

HTML 4.01为script标签定义了6个属性

  • async:可选,表示异步,立即下载脚本,但是不妨碍页面中其它操作。只对外部脚本文件有效
  • charset:可选,表示通过src属性指定的代码的字符集。大多数浏览器会忽略他的值
  • defer:可选, 表示脚本可以延迟到文档完全被解析之后再执行,只对外部文件有效
  • language:已废弃,原用来表示编写代码所使用的脚本语言
  • src:可选,表示要执行的代码外部文件
  • type:可选,可以看成是language的代替属性,表示编写代码使用的脚本语言的内容类型。默认为 text/javascript

使用script标签的方式:直接在页面中嵌入JavaScript代码和包含外部文件

在使用script标签嵌入JavaScript代码时,需要为该标签指定type属性,然后将JavaScript代码放入即可

<script>
function sayHi(){
alert("Hi~")
}
<script>

注意:

  1. 如果要使用外部JavaScript文件,则script标签的src属性就是必须的,这个属性的值就是一个指向外部JavaScript文件的链接

    <script type="text/javascript" src="example.js"></script>
  2. 在使用嵌入式JavaScript代码时,切忌不要在任何地方出现“script”字符串,因为浏览器会将其解析为结束标签

eg:错误的写法(会报错)

<script>
function sayScript(){
alert("</script>");
}
</script>

eg:正确的写法(通过转义字符转义)

<script>
function sayScript(){
alert("<\/script>");
}
</script>
  1. 包含在script标签中的代码,将会被从上到下依次解释

2. 标签的位置

按照传统的做法,所有的script标签都要放在页面的head标签中。

这种做法意味着页面要等全部的JavaScript代码都被下载和执行完成以后,才开始呈现页面的内容。这无疑会导致页面页面在加载的时候出现延迟。影响用户体验。为避免这个问题,现代的web应用程序一般把全部的JavaScript放在标签的最后面

<!DOCTYPE>
<html>
<head>
<title>Example Html page</title>
</head>
<body>
//...内容区
<script type="text/javascript" src="example1.js" ></script>
<script type="text/javascript" src="example2.js" ></script>
</body>
</html>

3.延迟和异步加载

defer属性:脚本会被延迟到整个页面都解析完成之后再运行,因此,在script标签中设置该属性,等于告诉浏览器,立即下载,延迟执行

async:只适用于外部脚本文件,并告诉浏览器立即下载文件,但是并不保证按照指定它们的先后顺序执行

4.嵌入代码与外部代码的区别

一般认为最好的做法还是尽可能使用外部文件来包含JavaScript代码

外部文件含有如下优点:

  • 可维护性强
  • 可缓存:如果有两个文件使用同一个JavaScript文件,那么该JavaScript文件只会被加载一次,可以加快页面加载速度
  • 适应未来

5.noscript元素

包含noscript的元素只有在以下情况下才会显示出来

  • 浏览器不支持脚本
  • 浏览器支持脚本,但是脚本被禁用

只有符合以上条件,noscript标签中的内容才会显示出来

<!DOCTYPE>
<html>
<head>
<title>Example Html page</title>
<script type="text/javascript" src="example1.js" ></script>
<script type="text/javascript" src="example2.js" ></script>
</head>
<body>
<noscript>
<p>
本页面需要浏览器支持(启用)JavaScript
</p>
</noscript> </body>
</html>

这个页面会在脚本无效的情况下向用户展示一条信息。而在启用了脚本的浏览器中,用户永远也不会看到它,即使它是页面的一部分

6. 小结

  1. 包含外部的JavaScript文件的时候,script标签必须使用src属性指定外部文件链接
  2. 在不使用异步和延迟加载(async,defer)的情况下,所有script标签中的元素都会按照他们在文件中出现的顺序依次依次加载,只有解析完前面的script标签之后,才会解析后面的
  3. defer属性可以让脚本在文档完全呈现之后再去执行,延迟脚本总是按照他们的顺序执行
  4. async属性可以表示当前脚本不必等待其他脚本,也不必阻塞文档呈现,但是不能保证异步脚本按照他们原来的顺序
  5. noscript标签可以指定在不支持脚本的浏览器中显示替代的内容,但是在启用了脚本的浏览器中,浏览器不会显示该标签中的任何内容

2.在HTML中使用JavaScript的更多相关文章

  1. JavaScript高级程序设计-(1)html中使用JavaScript

    html中使用JavaScript 1.延迟脚本 script标签定义了defer属性,脚本会被延迟到整个页面都解析完毕后运行 详细内容如下: 2.异步脚本 script标签定义了async属性,as ...

  2. 在HTML中使用JavaScript元素

    script属性<script async = async charset="utf-8" defer="defer" src="index.h ...

  3. 2在HTML中使用JavaScript

    像HTML页面中插入JavaScrip的主要方法,就是使用<script>元素.HTML4.01为<script>定义了6个属性:async:可选,表示应该立即下载脚本,当不妨 ...

  4. javascript高级编程3第二章:在html中使用javascript

    2.1 <script>元素 向html页面中插入javascript的主要方法,就是使用<script>元素.这个元素被加入到正式的html规范中.html4.01为< ...

  5. JS高程2.在HTML中使用Javascript(1)

    1.使用<script>元素向HTML页面中插入Javascript HTML4.01中<script>标签有6个属性: (1)async:可选.表示立即下载脚本,不影响页面中 ...

  6. 在Swift中使用JavaScript的方法和技巧

    本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...

  7. js002-在HTML中使用JavaScript

    js002-在HTML中使用JavaScript 2.1            <script>元素   定义了以下6个属性   async: 可选.表示应该立即下载脚本,但不妨碍页面中的 ...

  8. Javascript高级程序设计——在HTML中使用Javascript

    <script>元素 向HTML页面中插入Javascript的主要方法,就是使用<script>元素,<script>元素有六个属性: async:可选.表示应该 ...

  9. 2. javacript高级程序设计-在HTML中使用JavaScript

    1.1 <script>元素 向HTML页面中插入JavaScript的主要方法,就是使用<script>元素,<script>元素定义了一下6个元素: (1). ...

  10. js-js实现,在HTML中使用JavaScript,基本概念

    Js实现: 1.JavaScript实现的组成: 核心(ECMAScript):由ECMA-262定义,提供核心语言功能 文档对象模型(DOM)提供访问和操作网页内容的方法以及接口 浏览器对象模型(B ...

随机推荐

  1. nodejs命令行执行时带参数

    nodejs命令行执行时带参数 转 https://www.jianshu.com/p/474e6d76f867   今天项目里突然想在初始化时跑一些数据,于是想起以前在python时可以在命令行里带 ...

  2. Android Studio运行Hello World程序

    老的神舟本本装上了深度LINUX了...应该是基于ubuntu的,安装软件用的apt-get而不是yum 想重装学下android原生开发,官网下载了android studio, 发现不用FQ也能下 ...

  3. asp.netcore Log4Net连接kafka的方法

    1.NuGet添加2个包: Microsoft.Extensions.Logging.Log4Net.AspNetCore log4net.Kafka.Core 2.Program里修改CreateW ...

  4. Katalon studio登陆并进行用户名和密码参数化

    前面步骤不截图了,简单说一下: 1.创建空的test case :login 2.点击record录制脚本,走登陆 3.生成的脚本后,点击login用例属性,新建2个变量值 4.创建好后,进入用例页面 ...

  5. JS调用onBackPressed

    需求: 安卓页面webview加载H5页面,H5页面能能返回到安卓页面 import android.os.Bundle; import android.support.v7.app.AppCompa ...

  6. 【嵌入式开发】裸机引导操作系统和ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )

    [嵌入式开发]ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )     一. 内存 ...

  7. phpspreadsheet 中文文档(五)节约内存+PHPExcel迁移

    2019年10月11日14:03:31 节省内存 PhpSpreadsheet在工作表中平均每个单元格使用约1k,因此大型工作簿可以迅速用尽可用内存.单元缓存提供了一种机制,使PhpSpreadshe ...

  8. commitlint那些事儿

    这里主要介绍提交信息用到的 cz 工具集. 一.生成器 commitizen,cz`生成提交说明`,格式化 git commit message. # 全局安装cz npm install -g co ...

  9. vs2015 debug时出现 C2039“cout”: 不是“std”的成员

    今天想起电脑上的vs2015,发现好久没用了,用了下,遇到了一个问题 由于不常用c++,还是觉得应该记录下来,以免下次遇到,不知怎么处理 新建项目Hello Hello.cpp #include &q ...

  10. qsort与sort

    快排是我们平常敲代码和比赛的时候     经常使用到的方法 qsort是函数库中自带的函数    这是一个标准的快排函数 而sort比qsort更是好用    sort对于不同大小的数组   会使用不 ...