suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript - Alle von der Seite eingeführten JS-Dateien, jede JS-Datei verfügt über window.onload. Gelegentlich wird eine bestimmte JS-Datei nicht ausgeführt.

1. Führen Sie a.js und b.js auf Seite A ein. Es gibt kein Problem mit a.js und b.js, wenn Sie window.onload verwenden.
Aber ich führe auch a.js und c.js auf Seite B ein Gelegentlich sieht eine .js so aus, als ob sie überhaupt nicht ausgeführt würde. Aber ich habe den Inhalt von window.onload in a.js direkt in den Onload von c.js auf Seite B eingefügt, und ich weiß es nicht was ist los? ?

習慣沉默習慣沉默2717 Tage vor902

Antworte allen(5)Ich werde antworten

  • phpcn_u1582

    phpcn_u15822017-06-26 10:57:06

    window.onload只有一次,所以会出现多个js同时使用它而冲突的问题。
    解决办法

    1.用jQuery使用ready()方法替换onload
    2.在window.onload中一次加载所有js文件,例:window.onload=function(){function(a);function(b);} 

    Antwort
    0
  • 黄舟

    黄舟2017-06-26 10:57:06

    我试了一下,window可以绑定多次,但是最后一次才会生效,你可以对照看下我下面的2个例子来理解你出现的情况。

        //方式1:
        window.onload=function () {
            console.log("1");
        }
        window.onload=function () {
            console.log("2");
        }
    //    输出2
    //    -------------------------------分割线
    //    方式2:
        function fn1() {
            console.log("1");
        }
        function fn2() {
            console.log("2");
        }
        addEventLoad(fn1);
        addEventLoad(fn2);
        //输出1  2
        function addEventLoad(fn){
            var oldFn = window.onload;
            if(typeof window.onload != 'function'){
                window.onload = fn;
            }else{
                window.onload = function(){
                    oldFn();
                    fn();
                }
            }
        }

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-06-26 10:57:06

    • 通过window.onload = function() { ... }方法设置的事件,后面的window.onload值会覆盖掉前面的,所以,只有最后一次生效。(这个和调用a = 1; a = 2; a =3;是一个道理)

    • 如果需要对windowonload事件进行多次绑定,建议使用addEventListener

    window.addEventListener('load', function() { ... }, false);
    • 注意,ID中使用attachEvent而非addEventListener

    window.attachEvent('onload', function() { ... });
    • 另外注意,addEventListener中用的是'load',而attachEvent中用的是'onload'

    Antwort
    0
  • 世界只因有你

    世界只因有你2017-06-26 10:57:06

    window.onload()方法只能绑定一次的,多次绑定只有最后一次生效

    Antwort
    0
  • 代言

    代言2017-06-26 10:57:06

    window.onload只会调用最后一个的,之前的都会被覆盖掉。

    Antwort
    0
  • StornierenAntwort