第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实体来替代。如&gt;为>,&lt;为<。

 二.引用外链

  写好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代码//-->,现在已废弃。

时间: 2024-10-13 01:27:46

第2章 两种调用JS的方法——在HTML中使用JavaScript的相关文章

第九章 两种模式的比较

#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <assert.h> #include <stdio.h> #include <unistd.h> #include <errno.h> #include <string.h> #include

iOS - UITableView中有两种重用Cell的方法

UITableView中有两种重用Cell的方法: iOS代码 - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(6_0); 在iOS 6中dequeueReusableCellWith

数据归一化和两种常用的归一化方法

数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性.原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价.以下是两种常用的归一化方法: 一.min-max标准化(Min-Max Normalization) 也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间.转换函数如下: 其中max为样本数据的最大

找1~100之间素数的两种比较简单的方法

方法一:利用一个布尔类型的值的判断,优点想法更直接易懂 public static void main(String[] args) { for(int i=2;i<=100;i++){ boolean b=true; for(int n=2;n<i;n++){ if(i%n==0){ b=false; break; } } if(b==true){ System.out.print(i+"\t"); } } } 方法二:能被2和这个数本身以外的数整除的都不是素数.理解难但

调用JS的方法

触发javascript写的方法: 1.在button的click直接写JS语句调用 <button type="button" onclick="alert('Welcome!')">点击这里</button> 2.在button的click绑定js方法,点击时会调用 <script> function myFunction() { x=document.getElementById("demo"); //

js调用php和php调用js的方法举例

js调用php和php调用js的方法举例1 JS方式调用PHP文件并取得php中的值 举一个简单的例子来说明: 如在页面a.html中用下面这句调用: <script type="text/javascript" src="b.php?action=test"></script> <script type="text/javascript" > alert(jstext); </script> 在b

【转】数据归一化和两种常用的归一化方法

转自http://www.cnblogs.com/chaosimple/p/3227271.html 数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性.原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价.以下是两种常用的归一化方法: 一.min-max标准化(Min-Max Normalization) 也称为离差标准化

以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数

下面是单链表的数据结构 typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*Linklist; 1.以指针参数实现 void delete_x_1(LNode *head,ElemType x){//head为单链表头结点,删除结点的值为x LNode *l = head; LNode *p = head->next; while(p != null){ if(p->data == x){ l->next =

[转] 数据归一化和两种常用的归一化方法

原文链接:http://www.cnblogs.com/chaosimple/p/3227271.html 数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性.原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价.以下是两种常用的归一化方法: 一.min-max标准化(Min-Max Normalization) 也称为离差