Leon's blog Leon's blog
首页
前端
场景
技术
更多
关于
收藏
索引
GitHub (opens new window)

Leon Yu

做一个有个性的开发者~
首页
前端
场景
技术
更多
关于
收藏
索引
GitHub (opens new window)
  • 前端
  • 前端工程化

  • JavaScript高级程序设计

    • JavaScript高级程序设计笔记
    • 什么是JavaScript
    • html中的js
      • <script> 元素
        • 标签位置
        • defer
        • async
        • 动态加载
        • XHTML(已废弃,可不再关注)
        • 行内代码与外部文件
        • 文档模式
      • <noscript>标签的用途
    • 语法基础(一)
    • 语法基础(二)
    • 变量、作用域与内存
    • 基本引用类型
    • 集合引用类型
    • 迭代器与生成器
    • 对象、类与面向对象编程
    • 代理与反射
    • 函数
    • 期约与异步函数
  • sass

  • vue熟悉

  • 前端存储

  • opensumi

  • WebContainer

  • storybook

  • 性能优化

  • 卡颂React

  • JS基础

  • 前端
  • JavaScript高级程序设计
leon yu
2024-07-31
目录

html中的js

# HTML 中的 JavaScript

# <script> 元素

script>元素的一个最为强大、同时也备受争议的特性是,它可以包含来自外部域的 JavaScript 文件。跟<img>元素很像,<script>元素的 src 属性可以是一个完整的 URL,而且这个 URL 指向的 资源可以跟包含它的HTML 页面不在同一个域中,比如这个例子:

<script src="http://www.somewhere.com/afile.js"></script>

浏览器在解析这个资源时,会向 src 属性指定的路径发送一个 GET 请求,以取得相应资源,假定是一个JavaScript 文件。这个初始的请求不受浏览器同源策略限制,但返回并被执行的JavaScript 则受限制。当然,这个请求仍然受父页面HTTP/HTTPS 协议的限制。

# 标签位置

在 head 标签中加入script会导致白屏问题,所以过去一般把script标签放在内容的后面,这样一来,页面会在处理 JavaScript 代码之前完全渲染页面。用户会感觉页面加载更快了,因为浏览器显示空白页面的时间短了。

# defer

延迟执行脚本,相当于放在底部,script会按照顺序执行。实际上不一定,最好只有一个。

# async

异步执行,在后台加载完之后就会立即执行

# 动态加载

除了<script>标签,还有其他方式可以加载脚本。因为JavaScript 可以使用DOM API,所以通过向DOM 中动态添加script 元素同样可以加载指定的脚本。

以这种方式获取的资源对浏览器预加载器是不可见的。这会严重影响它们在资源获取队列中的优先级。根据应用程序的工作方式以及怎么使用,这种方式可能会严重影响性能。要想让预加载器知道这些动态请求文件的存在,可以在文档头部显式声明它们:

<link rel="preload" href="gibberish.js">

# XHTML(已废弃,可不再关注)

可扩展超文本标记语言(XHTML,Extensible HyperText Markup Language)是将HTML 作为XML的应用重新包装的结果。与 HTML 不同,在 XHTML 中使用 JavaScript 必须指定 type 属性且值为text/javascript,HTML 中则可以没有这个属性。XHTML 虽然已经退出历史舞台,但实践中偶尔可能也会遇到遗留代码。

兼容XHTML,可以人工转译,也可以使用CDATA 块表示文档中可以包含任意文本的区块

# 行内代码与外部文件

外部文件是最佳实践

# 文档模式

IE5.5 发明了文档模式的概念,即可以使用doctype 切换文档模式。最初的文档模式有两种:混杂模式(quirks mode)和标准模式(standards mode)

可以使用文档模式来兼容IE

# <noscript>标签的用途

下面是一个例子:

<!DOCTYPE html> 
<html>  
  <head> 
  <title>Example HTML Page</title> 
  <script defer="defer" src="example1.js"></script> 
  <script defer="defer" src="example2.js"></script> 
  </head> 
  <body> 
  <noscript> 
    <p>This page requires a JavaScript-enabled browser.</p> 
  </noscript> 
  </body> 
</html> 
1
2
3
4
5
6
7
8
9
10
11
12
13

这个例子是在脚本不可用时让浏览器显示一段话。如果浏览器支持脚本,则用户永远不会看到它。

#核心技术
最近更新~: 2024/08/19, 01:05:55
什么是JavaScript
语法基础(一)

← 什么是JavaScript 语法基础(一)→

最近更新
01
应用层
01-11
02
计算机网络和因特网
12-22
03
关于
12-22
更多文章>
Theme by Vdoing | Copyright © 2024-2025 主题来自 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式