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>
2
3
4
5
6
7
8
9
10
11
12
13
这个例子是在脚本不可用时让浏览器显示一段话。如果浏览器支持脚本,则用户永远不会看到它。