Comment attendre le chargement de la page avant de cliquer ?

mahdiweb Messages postés 13 Statut Membre -  
mahdiweb Messages postés 13 Statut Membre -

Bonjour,

Je veux manipuler un site Intranet avec Javascript et j'ai fais les fonctions suivantes qui marchent bien, mais si je l'exécute une par une :

1: function (){ 
var list = document.getElementsByName("filter");
for (var i=0; i<list.length; i++) list[i].click();
 
 },
2: function (){ 
 
var list = document.getElementsByClassName("ui-icon ui-icon-pencil tiptip");
for (var i=0; i<list.length; i++) list[i].click();
 
 },
3: function (){  
for(var i = 0, len = document.links.length; i < len; i += 1) {
    if(document.links[i].textContent === "Configuration ") {
        document.links[i].click();
    }
}
 },
4: function (){  
 
document.getElementsByName("configurations[]")[0].checked = true;
document.getElementsByName("configurations[]")[1].checked = true;
 
 },

Mon objectif c'est de lancer toutes les fonctions mais je dois attendre à chaque fois le chargement de la page avant de faire le deuxième clic puis le troisième puis le quatrième.
J'ai essaie de faire comme sa :

1: function (){
 
var list = document.getElementsByName("filter");
for (var i=0; i<list.length; i++) list[i].click();
 
// 1 second delay
setTimeout(function(){
 var list = document.getElementsByClassName("ui-icon ui-icon-pencil tiptip");
for (var i=0; i<list.length; i++) list[i].click();   
}, 3000);
 
 
for(var i = 0, len = document.links.length; i < len; i += 1) {
    if(document.links[i].textContent === "Configuration ") {
        document.links[i].click();
    }
}
 },

mais ça ne marche pas, si vous avez des propositions svp je serai reconnaissant.
Windows / Chrome 91.0.4472.77

2 réponses

  1. hypothetix Messages postés 194 Date d'inscription   Statut Membre Dernière intervention   68
     

    Bonjour,

    Le plus simple:

    document.addEventListener("DOMContentLoaded", function(event) { 
      //appel aux fonctions
    });
    

    cdlt

    1
  2. mahdiweb Messages postés 13 Statut Membre
     

    Bonjour,

    J'ai fais comme suite mais ça ne marche pas.

    function () {
    document.addEventListener("DOMContentLoaded", () => {
    var list = document.getElementsByClassName("ui-icon ui-icon-pencil tiptip");
    for (var i=0; i<list.length; i++) list[i].click();
    });
    }
    

    Et j'ai essayé d'adapter le code sur le lien comme suite :

    function () {
    
    function addEvent(elem, event, fn) {
        if (elem.addEventListener) {
            elem.addEventListener(event, fn, false);
        } else {
            elem.attachEvent("on" + event, function() {
      
                return(fn.call(elem, window.event));   
            });
        }
    }
    
    var logs = [];
    var eventSet = false;
    var loaded = false;
    function log(str) {
        
        if (loaded) {
            output(str);
        } else {
            logs.push(str);
        }
    
        function output(str) {
            var o = document.getElementById("log");
            var div = document.createElement("div");
            div.appendChild(document.createTextNode(str));
            o.appendChild(div);
        }
        
        if (!eventSet) {
            eventSet = true;
            addEvent(window, "load", function() {
                loaded = true;
                for (var i = 0; i < logs.length; i++) {
                    output(logs[i]);
                }
                logs = [];
            });
        }    
    }
    
    (function(funcName, baseObj) {
    
        funcName = funcName || "docReady";
        baseObj = baseObj || window;
        var readyList = [];
        var readyFired = false;
        var readyEventHandlersInstalled = false;
    
    
        function ready() {
            if (!readyFired) {
       
                readyFired = true;
                for (var i = 0; i < readyList.length; i++) {
    
                    readyList[i].fn.call(window, readyList[i].ctx);
                }
    
                readyList = [];
            }
        }
    
        function readyStateChange() {
            if ( document.readyState === "complete" ) {
                ready();
            }
        }
    
    
        baseObj[funcName] = function(callback, context) {
            if (typeof callback !== "function") {
                throw new TypeError("callback for docReady(fn) must be a function");
            }
    
            if (readyFired) {
                setTimeout(function() {callback(context);}, 1);
                return;
            } else {
          
                readyList.push({fn: callback, ctx: context});
            }
    
            if (document.readyState === "complete") {
                setTimeout(ready, 1);
            } else if (!readyEventHandlersInstalled) {
    
                if (document.addEventListener) {
         
                    document.addEventListener("DOMContentLoaded", ready, false);
           
                    window.addEventListener("load", ready, false);
                } else {
          
                    document.attachEvent("onreadystatechange", readyStateChange);
                    window.attachEvent("onload", ready);
                }
                readyEventHandlersInstalled = true;
            }
        }
    })("docReady", window);
    
    //ma fonction 1
    docReady(function() {
    var list = document.getElementsByName("filter");
    for (var i=0; i<list.length; i++) list[i].click();
        
    //ma fonction 2
    docReady(function() {
    var list = document.getElementsByClassName("ui-icon ui-icon-pencil tiptip");
    for (var i=0; i<list.length; i++) list[i].click();
    });
    
    //ma fonction 3
    docReady(function() {
            for(var i = 0, len = document.links.length; i < len; i += 1) {
        if(document.links[i].textContent === "Configuration ") {
            document.links[i].click();
        }
    }
        });
    //ma fonction 4
    docReady(function() {
    var x = document.getElementsByName("configurations[]");
        var i;
        for (i = 0; i < x.length; i++) {
            if (x[i].type == "checkbox") {
                x[i].checked = true;
            }
        }
    
        });
    });
    
    },

    mais je dois exécuter ce dernier 4 fois pour avoir le résultat des 4 fonctions. 

    0