页面所有元素加载完成之后执行某个js函数

本文探讨了在网页所有元素加载完成后执行特定JavaScript函数的方法。对比了window.onload与$(document).ready()的不同,并提供了一种兼容多种浏览器的实现方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在页面所有元素加载完成之后执行某个js函数

 

做项目的时候可能会遇到这种情况:

       一个JSP页面中import了一个目录文件(menu.jsp),而且每个页面的<body>中都定义了onload事件,那么在此定义window.onload函数的时候可能会不生效或者多个onload之间覆盖的现象.

       有的朋友肯定会说用jQuery的$().ready(function(){}),或者(function(){})这种方式, 其实这个函数和javascript的onload事件是由区别的,那么来看看他们的区别:

他们的主要的区别有两点:

  1. 执行时机
    window.onload方法是在网页中的所有的元素(包括元素的所有关联文件)都完全加载到浏览器之后才执行。而通过jQuery中的$(document).ready()方法注册的事件处理程序,只要在DOM完全就绪时,就可以调用了,比如一张图片只要<img>标签完成,不用等这个图片加载完成,就可以设置图片的宽高的属性或样式等。
  2. $(document).ready()方法可以多次使用而注册不同的事件处理程序,而window.onload一次只能保存对一个函数的引用,多次绑定函数只会覆盖前面的函数。
    先来看window.onload方法在一个页面上注册两次会是什么样的结果:
    function one(){
        alert("one");
    }
    function two(){
        alert("two");
    }
    window.onload = two ;
    window.onload = one ;

     

    上面的代码运行后,会弹出“one”。

    再来看看$(document).ready()方法分两次调用会是什么结果。

    function one(){
        alert("one");
    }
    function two(){
        alert("two");
    }
    $(document).ready(function(){
        one();
    });
    $(document).ready(function(){
        two();
    });
     上面的代码运行后,会分别弹出“one”和“two”。
    好了,比较完了,也就是说window.onload和jQuery的方式都无法实现,所以有了下面的实现:
    var $$ = function(func){
                if (document.addEventListener) {
                    window.addEventListener("load", func, false);
                }
                else if (document.attachEvent) {
                    window.attachEvent("onload", func);
                }
            }
            
            $$(function(){
            	show();
            })
     使用的时候只要这样:
    $$(function(){...此处加上需要执行的内容...});即可...

     

<think>好的,我现在需要解决用户的问题:如何在HTML页面加载完成后自动运行特定的JavaScript函数。让我先仔细阅读用户提供的引用内容,然后结合自己的知识来整理答案。 首先,用户提到了几种方法,包括使用window.onload、jQuery的ready方法,以及直接在body标签中使用onload属性。我需要把这些方法分门别类,确保覆盖不同的实现方式,比如原生JSjQuery的区别。 引用中多次提到window.onload和document.ready的区别,尤其是执行时机和多次绑定的问题。比如,window.onload需要所有资源加载毕,而jQuery的ready在DOM就绪后即可执行。同时,window.onload只能绑定一次,而jQuery可以多次使用。这些点需要明确在回答中说明,避免用户混淆。 用户可能的需求是选择最适合的方法,可能需要考虑是否需要等待图片等资源,或者是否使用jQuery库。所以,我应该分别列出不同方法的步骤,并比较它们的优缺点,帮助用户根据具体情况选择。 另外,引用中提到了直接在body标签的onload属性中写函数,这也是一种方法,但可能不够灵活,尤其是当需要绑定多个函数时。这点需要指出,并建议使用addEventListener来替代,以支持多个处理函数。 还要注意语法正确性,比如使用window.onload = function() {} 或者addEventListener的写法,以及jQuery的简写形式$(function() {})。需要确保示例代码正确,避免用户复制时出错。 最后,生成的相关问题需要围绕这些方法的区别、如何执行多个函数、以及如何选择合适的方法来展开,这样用户如果有进一步的问题,可以找到对应的解答。 总结一下,回答的结构应该是先总述几种方法,然后分点详细说明每种方法的实现步骤,比较它们的区别,最后给出相关问题。这样用户能够清晰理解并选择合适的方法。</think>在HTML页面加载完成后自动执行JavaScript函数的实现方法可分为原生JavaScriptjQuery两种方式,具体如下: ### 一、原生JavaScript方法 1. **window.onload 方法** 当所有资源(包括图片、样式表等)加载完成后触发: ```javascript window.onload = function() { myFunction(); // 可在此执行其他初始化操作 }; ``` *注意:多次赋值会覆盖前一个函数,只能保留最后一个[^4]* 2. **DOMContentLoaded 事件** 仅需DOM树构建完成即可执行(无需等待图片等资源): ```javascript document.addEventListener('DOMContentLoaded', function() { myFunction(); }); ``` 3. **body标签的onload属性** 直接在HTML中声明: ```html <body onload="myFunction();"> ``` ### 二、jQuery方法 1. **$(document).ready()** 标准写法,DOM就绪后立即执行: ```javascript $(document).ready(function() { myFunction(); }); ``` 2. **简写形式** 效果与上述等价: ```javascript $(function() { myFunction(); }); ``` ### 三、方法对比 | 方法 | 执行时机 | 多次绑定支持 | 依赖库 | |----------------------|--------------------------|--------------|----------| | window.onload | 所有资源加载毕 | 否 | 无 | | DOMContentLoaded | DOM树构建完成 | 是 | 无 | | jQuery ready() | DOM就绪 | 是 | 需要jQuery | ### 四、最佳实践建议 - 若需操作DOM元素且不依赖图片资源,优先使用`DOMContentLoaded`或jQuery的`ready()` - 需要精确控制执行顺序时,推荐使用`addEventListener`绑定多个函数 - 使用jQuery时注意版本兼容性,新版jQuery推荐使用`$(function(){})`简写[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值