Comment attendre le chargement de la page avant de cliquer ?
mahdiweb
Messages postés
13
Statut
Membre
-
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
A voir également:
- Comment attendre le chargement de la page avant de cliquer ?
- Comment supprimer une page sur word - Guide
- Comment remettre ma page d'accueil comme avant - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Word numéro de page 1/2 - Guide
- Retrouver mon compte copains d'avant - Forum Réseaux sociaux
2 réponses
Bonjour,
Le plus simple:
document.addEventListener("DOMContentLoaded", function(event) {
//appel aux fonctions
});
cdlt
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.