zoukankan      html  css  js  c++  java
  • 在 HTML 中使用 JavaScript

    本章内容

    • 使用 <script> 元素
    • 嵌入脚本与外部脚本
    • 文档模式对JavaScript的影响
    • 考虑禁用JavaScript的场景

    2.1 <script>元素

    向HTML中插入Javascript的主要方法就是通过<script>元素,所以它是一个HTML元素。HTmML4.01为<script>定义了下列6个属性。

    • async: 可选。表示立即下载脚本,单不妨碍页面中其他操作。只对外部脚本文件有效。
    • charset: 可选。表示通过src属性指定的代码的字符集。(很少用)
    • defer: 可选。表示脚本可以延迟到文档完全解析和*显示之后再执行。
    • language: 已废弃。
    • src: 可选。表示包含要执行的外部文件代码地址。
    • type:可选。language的替代属性;表示编写代码使用的脚本语言的内容类型(MIME),一般不设置默认为 text/javascript

    一般使用<script>元素内部的JavaScript代码时,只需为它指定 type 属性,如下:

    <script type="text/javascript">
      function sayHi(){
        alert("Hi!")
      }
    </script>
    

    注意!!! 不要在代码中任何地方出现“</script>”,因为出现此标签,解析器就会认为这是结束标签而出现错误,解决方法是 将结束标签转义后 </script>

    外部js文件引用需要制定src属性,如下:

    <script type="text/javascript" src="example.js"></script>
    

    2.1.1 标签的位置

    按照惯例,所有的 <script>元素都应该放到页面的 <head>元素中,如下:

    <!DOCTYPE html>
    <html>
      <head>
        <title>Example Page</title>
        <script type="text/javascript" src="example.js"></script>
      </head>
      <body>
        <!-- 这里放内容 -->
      </body>
    </html>
    

    但是这样会阻塞页面渲染,因为解析器是单线程解析文档对象,所以在开发中一般会将<scrit>元素放到页面元素之后,如下:

    <!DOCTYPE html>
    <html>
      <head>
        <title>Example Page</title>
      </head>
      <body>
        <!-- 这里是内容 -->
    
        <script type="text/javascript" src="example.js">
      </body>
    </html>
    

    2.1.2 延迟脚本

    之前提过,HTML 4.01 为<script> 标签定义了 defer 属性。这个属性让脚本在执行时不会影响页面的构造,即告诉脚本会被延迟到整个页面解析完成后再运行。 立即下载,延迟运行

    <!DOCTYPE html>
    <html>
      <head>
          <title>Example Page</title>
          <script type="text/javascript" defer="defer" src="example.js">
      </head>
      <body>
        <!-- 这里是内容 -->
      </body>
    </html>
    

    2.1.3 异步脚本

    HTML5 为<script>元素定义了async属性。这个和 defer 属性类似,都用于改变处理脚本行为。同样只适用于外部脚本,但不同的是:async属性并不保证按照指定他们的顺序先后执行:

    <!DOCTYPE html>
    <html>
      <head>
          <title>Example Page</title>
          <script type="text/javascript" async src="example1.js">
          <script type="text/javascript" async src="example2.js">
      </head>
      <body>
        <!-- 这里是内容 -->
      </body>
    </html>
    

    上面代码中,第二个脚本可能先于第一个脚本执行。所以运用此属性,首先要确保两个文件之间不互相依赖,异步脚本不要在加载期间修改DOM

    2.2 <noscript>元素

    此元素存在是因为早起浏览器遇到当浏览器不支持JavaScript时如何让页面平稳的退化。以替代不支持<script>的浏览器页面:

    • 浏览器不支持脚本
    • 浏览器支持脚本, 但脚本被禁止
    <html>
      <head>
          <title>Example Page</title>
          <script type="text/javascript" async src="example1.js">
          <script type="text/javascript" async src="example2.js">
      </head>
      <body>
        <!-- 这里是内容 -->
        <noscript>
          <p>本页面需要浏览器开启支持JavaScript</p>
        </noscript>
      </body>
    </html>
  • 相关阅读:
    qemu+chroot构建arm aarch64虚拟机
    <转>Linux环境下段错误的产生原因及调试方法小结
    <转>PCA的数学原理
    博客分类整理
    detectron2 配置记录
    如何读取部分的预训练模型
    重新配置语义分割实验环境遇到的坑
    pytorch 调整tensor的维度位置
    seg代码配置的踩坑记录
    Alienware R8外星人台式机安装双系统(WIN10+Ubuntu)的总结
  • 原文地址:https://www.cnblogs.com/gruguy/p/12587776.html
Copyright © 2011-2022 走看看