第2章 两种调用JS的方法——在HTML中使用JavaScript
一. <script>标记
第一种方法是把 <sript></script>直接放到head和script两个标记之间(title下面,</head>上面)
<head>...
<title>demo</title>
<script type=”text/java script”>
/*type属性常被忽略掉。脚本默认是js,所以<script type=”text/java script”>可直接简写做<script>*/
...
</scipt>
</head>
内嵌js时,可能会涉及一些与html冲突的判断。比如<>之类的操作符。可以通过html实体来替代。如>为>,<为<。
二.引用外链
写好js文件,然后引用,在js文件中,不需要加入<script>标记。
<script type=”text/java script” src=”xxx.js”></script> //内部的js代码将被忽略。
推荐使用第二种方法。具有方便维护,可缓存,标准化等优点。
三. 那么问题来了
script标记的加载方式是由上到下进行的。在解析器<script>元素对所有js代码求值结束之前,页面中其余的内容都不会被显示。如何改善性能?
1.defer属性延迟加载
一个方法是利用script元素的defer属性。表面脚本在不影响页面构造时才会执行(在html内容加载完之后才执行)。如在<head>元素内加入:
<script defer=”defer” arc=”xxx*.js”></script>
两个defer存在时,理论上是按顺序执行。
2.异步加载
script的另一个属性async与defer相似。要求在不影响页面构造时,立即下载js文件。
<script defer=”defer” async arc=”xxx*.js”></script>
但是当存在两个async时,即便理论上也不能保证二者是顺序加载。
3.最好的方式
把<script>放到html页面内容最后(</body>之前),再外链引用之——这样可以更好快地加载文件。
4.又一个问题
当浏览器不支持脚本;或者浏览器js脚本被禁用后,如何让页面平稳退化?
在body元素内最后部分加上noscript代码(这段代码在js正常时不会显示):
<noscript> <p>本页面需要浏览器支持(启用)javascript脚本。</p> </nosript>
【补充】
历史上,js可以被写在html注释中。可以认为是js的“行间形式”。<!--js代码//-->,现在已废弃。
第2章 两种调用JS的方法——在HTML中使用JavaScript的更多相关文章
- iOS - UITableView中有两种重用Cell的方法
UITableView中有两种重用Cell的方法: - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; - (id)dequ ...
- SSH简介及两种远程登录的方法
出处 https://blog.csdn.net/li528405176/article/details/82810342 目录 SSH的安全机制 SSH的安装 启动服务器的SSH服务 SSH两种级别 ...
- js调用php和php调用js的方法举例
js调用php和php调用js的方法举例1 JS方式调用PHP文件并取得php中的值 举一个简单的例子来说明: 如在页面a.html中用下面这句调用: <script type="te ...
- C#两种创建快捷方式的方法
C#两种创建快捷方式的方法http://www.cnblogs.com/linmilove/archive/2009/06/10/1500989.html
- HTTP/HTTPS GET&POST两种方式的实现方法
关于GET及POST方式的区别请参照前面文章:http://www.cnblogs.com/hunterCecil/p/5698604.html http://www.cnblogs.com/hunt ...
- 两种ps切图方法(图层/切片)
两种Ps切图方法 一. 基础操作: a) Ctrl++ 放大图片,ctrl - -缩小图片 b) 按住空格键space+,点击鼠标左键,拖动图片. c) 修改单位,点击编辑 ...
- Eclipse中SVN的安装步骤(两种)和使用方法
Eclipse中SVN的安装步骤(两种)和使用方法 一.给Eclipse安装SVN,最常见的有两种方式:手动方式和使用安装向导方式.具体步骤如下: 方式一:手动安装 1.下载最新的Eclipse,我的 ...
- TextView两种显示link的方法
TextView两种显示link的方法 一.简介 也是TextView显示文本控件两种方法 也是显示丰富的文本 二.方法 TextView两种显示link的方法 1)通过TextView里面的类ht ...
- Python_两种导入模块的方法异同
Python中有两种导入模块的方法 1:import module 2:from module import * 使用from module import *方法可以导入独立的项,也可以用from m ...
随机推荐
- extJs学习基础4 Ext.each的用法
Ext.onReady(function(){ //案例一 /* var countries = ['Vietnam', 'Singapore', 'United States', 'Russia'] ...
- Java--笔记(3)
21.当涉及到继承时,按照如下顺序执行: (1).执行父类的静态代码块 (2).执行子类的静态代码块 (3).执行父类的构造代码块 (4).执行父类的构造函数 (5).执行子类的构造代码块 (6).执 ...
- [转]oracle学习入门系列之五内存结构、数据库结构、进程
原文地址:http://www.2cto.com/database/201505/399285.html 1 Oracle数据库结构 关于这个话题,网上一搜绝对一大把,更别提书籍上出现的了,还有很多大 ...
- 简单的cookie使用
<html><head><script type="text/javascript">function getCookie(c_name){if ...
- java内存空间详解
Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识.一般 ...
- Java类加载器总结
1.类的加载过程 JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示: 1) 装载:查找并加载类的二进制数据: 2)链 ...
- 【HDU 5818多校】Joint Stacks
用两个栈模拟,并保存每个点的时间戳.每次合并的时候记录合并时的时间戳mcnt和此时的topa和topb记做ta.tb. 每次pop的时候,如果栈的top的时间戳大于mcnt,则普通地pop,否则就在两 ...
- namespace for c++
namespace中文意思是命名空间或者叫名字空间,传统的C++只有一个全局的namespace,但是由于现在的程序的规模越来越大,程序的分工越来越细,全局作用域变得越来越拥挤,每个人都可能使用相同的 ...
- 【BZOJ-3638&3272&3267&3502】k-Maximum Subsequence Sum 费用流构图 + 线段树手动增广
3638: Cf172 k-Maximum Subsequence Sum Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 174 Solved: 9 ...
- 【bzoj3624】Apio2008—免费道路
http://www.lydsy.com/JudgeOnline/problem.php?id=3624 (题目链接) 题意 给出一张无向图,其中有0类边和1类边.问能否构成正好有K条0类边的生成树, ...