zoukankan      html  css  js  c++  java
  • 《JavaScript高级程序设计》学习笔记(第二章)

    在HTML中使用JavaScript

    在前端开发中,HTML是整个页面的基石,用于控制页面的结构,如果没有HTML的话,JavaScript也将无用武之地,所以使用JavaScript的首要问题就是如何将其与HTML页面结合起来。

    向HTML中添加JavaScript的方法就是利用<script>标签,使用<script>元素的方法有两种:

    1. 在页面内直接写JavaScript代码

       <script>
           function sayHi() {
               alert("Hi");
           }
       </script>        
      
    2. 引用外部JavaScript文件

       <script src="example.js"></script>
      

    写在<script>标签中的代码将被从上往下依次解释。在解释器对<script>中的所以代码求值完毕之前,页面中其余内容都不会被浏览器加载或显示。

    <script>标签的位置

    传统的做法是将<script>标签放到页面的<head>元素中,如:

        <!DOCTYPE html>
        <html >
        <head>
            <title>Example HTML Page</title>
            <script src="exmpale1.js"></script>
            <script src="example2.js"></script>
        </head>
        <body>
            <!-- contents go here -->
        </body>
        </html>
    

    这种做法与引入CSS文件类似,目的是将引入文件的动作全部集中在一个位置,但是这种做法有一个缺点,那就是在JavaScript代码全部最下载、解析和执行之前,页面中的内容都不会显示。假如我们引用了比较多的js文件,或者是在一个外国的网站,导致下载速度并不快,这就会造成一个的明显延迟,在这期间页面将是一片空白,这显然是非常不好的用户体验。所以,现代的web程序一般将<script>标签放在<body>的结束标签之前,这样在解析包含的JavaScript代码之前,页面内容就会先全部显示在浏览器中。

        <!DOCTYPE html>
        <html>
        <head>
            <title>Example HTML Page</title>
        </head>
        <body>
            <!-- contents go here -->
            <script src="jquery.min.js"></script>
            <script src="example.js"></script>
        </body>
        </html>
    

    延迟脚本

    在HTML4.01中为<script>定义了defer属性,这个属性的用途是表明脚本在执行的时候不会影响页面的构造。在<script>中指定这个属性就是告诉浏览器可以立即下载脚本,但是要延迟执行。

        <!DOCTYPE html>
        <html>
        <head>
            <title>Document</title>
            <script defer="defer" src="example.js"></script>
        </head>
        <body>
            <!-- contents go here -->
        </body>
        </html>
    

    上面这段代码虽然放在<head>中,但是其引用的脚本会在浏览器遇到</html>标签后才执行。

    defer属性只有在引用外部JavaScript文件的时候才会起作用,如果给嵌入脚本使用这个属性,则浏览器会直接忽略这个属性。而且并非所有的浏览器都支持这个属性,对于不支持此属性的浏览器也会直接忽略该属性。所以,将会导致延迟的脚本放到页面的底部仍是最佳的选择。

    异步脚本

    HTML5为<script>定义了async属性,这个属性的目的是让页面不用等待脚本的下载和执行,从而可以异步加载页面的其它内容。与延迟脚本一样,async也只适用于外部脚本。

    嵌入代码与外部文件哪家强

    一般来讲,引用外部文件的做法会比将代码直接嵌入到HTML文件中更有优势。
    虽然JavaScript中没有强调使用外部文件的规定,但是使用外部文件会有更多的优点:

    • 可维护性
      嵌入性的代码会在遍布在各个HTML文件中,如果项目比较大,并且页面文件比较多,就会造成一定程度的混乱,所以将所有的JavaScript文件都放到同一个目录中,维护起来会比较轻松。说得比较专业一点就是可以将结构与行为相分离。
    • 可缓存
      如果多个文件使用的是同一套代码,则使用外部文件的时候只需要下载一次代码就够了,这能够加快页面的加载速度。

    <noscript>元素

    这个元素的作用跟他的名字一样,就是在当浏览器不支持JavaScript的时候用来显示替代的内容。这个元素只有在以下情况中才会被显示出来:

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

    下面是一个简单的例子:

        <!DOCTYPE html>
        <html>
        <head>
            <title>Document</title>
            <script type="text/javascript" defer="defer" src="example1.js"></script>
            <script type="text/javascript" defer="defer" src="example2.js"></script>
        </head>
        <body>
            <noscript>
                <p>This page does not support javascript</p>
            </noscript>
        </body>
        </html>
    

    这段代码会在浏览器的JavaScript不可用的时候在页面上显示一条消息,而在启用了JavaScript浏览器中,用户则永远不会看到这条消息。

  • 相关阅读:
    打怪(CDQ分治+斜率优化)
    中缀表达式求值
    马拉车(manacher)算法
    后缀数组的求法及应用
    【最小生成树】藏宝图(prim)
    【最小生成树】prim算法
    [最近公共祖先]最近公共祖先(LCA)
    [思维]Supreme Number
    [模拟] Lattice's basics in digital electronics(2018沈阳赛区网络预赛)
    【搜索+思维】Distinctive Character
  • 原文地址:https://www.cnblogs.com/buginux/p/4092576.html
Copyright © 2011-2022 走看看