Comment attendre le chargement de la page avant de cliquer ?

mahdiweb Messages postés 11 Date d'inscription mardi 20 septembre 2022 Statut Membre Dernière intervention 26 octobre 2022 - 26 oct. 2022 à 12:00
mahdiweb Messages postés 11 Date d'inscription mardi 20 septembre 2022 Statut Membre Dernière intervention 26 octobre 2022 - 26 oct. 2022 à 16:15

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

hypothetix Messages postés 82 Date d'inscription dimanche 19 janvier 2020 Statut Membre Dernière intervention 22 janvier 2023 26
26 oct. 2022 à 13:17

Bonjour,

Le plus simple:

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

cdlt

1
mahdiweb Messages postés 11 Date d'inscription mardi 20 septembre 2022 Statut Membre Dernière intervention 26 octobre 2022
26 oct. 2022 à 16:15

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