解析页面加载与js函数的执行 onload or ready

解析页面加载与js函数的执行 onload or ready

页面加载过程

当浏览器加载一个页面时,会按照以下步骤逐步完成页面的加载:

  1. 浏览器通过DNS解析获取目标网站的IP地址
  2. 浏览器向服务器发出请求,获取HTML文件
  3. 浏览器开始解析HTML,构建DOM树
  4. 遇到CSS和JS文件时,浏览器会解析它们,并执行其中的代码
  5. 解析完成后,浏览器构建出渲染树
  6. 渲染树和DOM树进行合并,生成最终的页面

JS函数的执行

JS代码在上述第四步会被加载并执行,可通过两种方式来确保JS函数在DOM加载完成后才会执行:onload和ready。

window.onload

window.onload事件表示在网页中的所有元素加载完毕后才会执行,包括图像、嵌入的对象、样式表等。当HTML页面在浏览器窗口中完全渲染,并且所有依赖的资源都已经下载好后,window.onload事件才会被触发。

例如,在以下代码中,在页面以及所有图片都加载完成后,弹出”页面加载完成“的提示框:

window.onload = function() {
  alert("页面加载完成");
};

$(document).ready()

$(document).ready() 是 jQuery 提供的工具,可在 HTML 文档加载完成后进行调用。它表示文档已经加载完毕,并且HTML结构已解析完成,但并不表示所有的嵌入式资源已经加载成功。

例如,在以下代码中,当Dom树以及所有脚本、图片都装载完成之后,弹出”Dom树加载成功“的提示框:

$(document).ready(function() {
  alert("Dom树加载成功");
});

示例说明

示例一

设计一个网站,当用户将GIF图片复制到文本框中时,在新标签页中播放该GIF图。GIF图片在HTML中为img标签,播放GIF需要调用其他JS库。如何确保JS函数不会在HTML解析过程中被执行?

  1. 将img标签包含在一个默认隐藏的div元素中,防止图片加载时对页面渲染的影响。
  2. 在HTML页面底部调用JS库,并确保在dom树全部渲染完成后调用该库。
  3. 使用$(document).ready()函数将用户输入的文本框与JS脚本绑定。

示例代码如下:

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>动态播放GIF图片</title>
  <style>
    .hidden {
      display: none;
    }
  </style>
</head>

<body>
  <form>
    <input type="text" id="gif-input" placeholder="输入GIF图片地址">
    <input type="button" value="播放" onclick="playGif()">
  </form>
  <div class="hidden" id="gif-container">
    <img id="preview" />
  </div>
  <script src="jquery.js"></script>
  <script>
    $(document).ready(function () {
      document.getElementById('gif-input').oninput = function () {
        document.getElementById('preview').src = document.getElementById('gif-input').value;
        $('#gif-container').show();
      }
    });
    function playGif() {
      window.open('viewer.html?image=' + encodeURIComponent(document.getElementById('gif-input').value));
    }
  </script>
</body>

</html>

示例二

设计一个网站,当用户点击一个按钮时,弹出画布,在画布上显示一个可移动的小球。如何确保小球画布在HTML加载完成后被渲染?

将JS代码包含在window.onload函数中,防止代码在页面加载过程中被执行。

示例代码如下:

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>小球运动动画</title>
  <style>
    canvas {
      border: 1px solid black;
    }
  </style>
</head>

<body>
  <canvas id="canvas" width="200" height="200"></canvas>
  <button onclick="start()">开始</button>
  <script>
    window.onload = function () {
      var canvas = document.getElementById('canvas');
      var context = canvas.getContext('2d');

      var ball = {
        x: 100,
        y: 100,
        vx: 5,
        vy: 4,
        radius: 25,
        color: 'blue',
        draw: function() {
          context.beginPath();
          context.arc(this.x, this.y, this.radius, 0, Math.PI * 2, true);
          context.closePath();
          context.fillStyle = this.color;
          context.fill();
        }
      };

      function start() {
        setInterval(function () {
          context.clearRect(0, 0, canvas.width, canvas.height);
          ball.x += ball.vx;
          ball.y += ball.vy;
          if (ball.x + ball.radius > canvas.width || ball.x - ball.radius < 0) {
            ball.vx = -ball.vx;
          }
          if (ball.y + ball.radius > canvas.height || ball.y - ball.radius < 0) {
            ball.vy = -ball.vy;
          }
          ball.draw();
        }, 16);
      }
    }
  </script>
</body>

</html>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解析页面加载与js函数的执行 onload or ready - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 学好js,这些js函数概念一定要知道【推荐】

    学好 JS,这些 JS 函数概念一定要知道 Javascript 是一种弱类型的编程语言,是前端工程师必备的技能之一。学好JS的过程中,我们需要熟练掌握一些重要的函数概念,本篇文章就为大家介绍这些概念并提供实例说明。 纯函数 纯函数是指输入确定时,输出也是确定的函数,并且不会对其它变量产生影响。 例如,下面这个函数就是一个纯函数: function add(…

    JavaScript 2023年5月27日
    00
  • 用JavaScript实现UrlEncode和UrlDecode的脚本代码

    现在我将详细讲解如何用JavaScript实现UrlEncode和UrlDecode的脚本代码。 什么是URL编码和解码 URL编码(也称为百分号编码)是将URL中的非ASCII字符替换为“%”(百分号),后跟两位十六进制数。URL解码是将带有%的十六进制编码转换为相应的字符。 URL编码和解码非常常见,它们是在处理URL(例如,将参数传递给Web服务)时必…

    JavaScript 2023年5月20日
    00
  • JavaScript中的Document文档对象

    JavaScript中的Document文档对象是指代表整个HTML文档的对象,它包含了HTML文档的所有内容,如标签、文本、属性等等。它是所有网页DOM的顶级容器,JavaScript可以通过该对象来获取和修改所有的HTML元素以及其内容和属性。 Document对象的常用属性与方法 常用属性 document.title:表示HTML页面的标题。 例子:…

    JavaScript 2023年5月27日
    00
  • javascript实现加载xml文件的方法

    下面是关于 javascript 实现加载 XML 文件的方法的完整攻略。 准备工作 在 JavaScript 中实现了加载 XML 文件之后,我们需要对其进行解析处理,因此我们需要一个能够方便操作 XML 文档的 API,推荐使用 DOM 解析器。它可以让我们快速地获取 XML 文件中的节点、属性等信息。 方法一:使用 XMLHttpRequest 对象加…

    JavaScript 2023年5月27日
    00
  • PHP设置Cookie的HTTPONLY属性方法

    下面是详细讲解“PHP设置Cookie的HTTPONLY属性方法”的完整攻略。 什么是HTTPOnly属性? HTTPOnly属性是一种安全标记,它告诉浏览器只有通过HTTP协议传递给服务器端的Cookie可以被读取,而不能在客户端被读取,以此来预防跨站点脚本攻击。 如何通过PHP设置HTTPOnly属性? PHP通过setcookie()函数设置HTTPO…

    JavaScript 2023年6月11日
    00
  • window.location.hash 使用说明

    当我们使用浏览器地址栏发送请求或者通过JS动态操作URL时,URL中除了问号(?)后的参数,还有一个#hash值。这个hash值可以通过JS的window.location.hash属性获取或者设置。下面让我们看一下window.location.hash的使用说明。 获取hash值 可以使用window.location.hash属性获取当前页面URL中的…

    JavaScript 2023年6月11日
    00
  • JavaScript Generator函数使用分析

    JavaScript Generator函数使用分析 什么是Generator函数 Generator函数是ES6引入的一种新的函数类型,与普通的函数不同之处在于它能够被暂停和恢复。在调用Generator函数时,不会立即执行函数内部的代码,而是返回一个迭代器对象,通过调用迭代器对象的next()方法,才会执行函数内部的代码,执行到关键字yield时函数暂停…

    JavaScript 2023年5月28日
    00
  • 如何让页面在打开时自动刷新一次让图片全部显示

    首先,我们需要了解网页自动刷新的原理。网页的自动刷新可以通过设置HTTP响应头实现。HTTP响应头部分可以通过前端开发工具或后端框架来设置。最常用的设置自动刷新的HTTP响应头是Refresh和Location,下面分别介绍两种设置方法。 一、Refresh方式 Refresh方法通过设置HTTP响应头Refresh,来指定页面自动刷新的时间和路径。具体设置…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部