Projet

Général

Profil

Actions

Evolution #346

ouvert

Autoreload

Ajouté par Thomas Souvignet il y a plus de 8 ans. Mis à jour il y a plus de 8 ans.

Statut:
En cours
Priorité:
Normal
Assigné à:
Début:
21/08/2017
Echéance:
% réalisé:

0%

Temps estimé:

Description

Simuler un clic sur le bouton rechercher toutes les x secondes/minutes (paramétrable dans la conf de l'extension).

Mis à jour par César Lizurey il y a plus de 8 ans

OK ça c'est assez simple:

function rafraichirBDSP(){
     document.getElementById('[ID DU BOUTON]').click();
}

window.setInterval(function(){
       rafraichirBDSP();
}, 60000); 

(ça c'est pour 60 secondes).

Mis à jour par César Lizurey il y a plus de 8 ans

Il faut attendre que le DOM soit chargé avant de déclenché la fonction:

document.addEventListener("DOMContentLoaded", function(event) {
// faire ce qu'il faut
});

Mis à jour par Thomas Souvignet il y a plus de 8 ans

  • Statut changé de Nouveau à En cours
  • Assigné à mis à César Lizurey

J'ai mis une sauvegarde FF de la page BDSP dans la section Fichiers de Redmine.

Si c'est complet, tu peux essayer de me proposer un bout de code à tester ?

Mis à jour par Thomas Souvignet il y a plus de 8 ans

Sur la base de :
https://stackoverflow.com/questions/809057/how-do-i-programmatically-click-on-an-element-in-javascript

J'ai tapé ça dans la console :

var element = document.getElementById("ext-gen268");
undefined
var clickEvent = new MouseEvent("click", {
"view": window,
"bubbles": true,
"cancelable": false
});
undefined
element.dispatchEvent(clickEvent);
TypeError: element is null

Bon à priori mon problème c'est surtout d'identifier :
document.getElementById("ext-gen268");

Mis à jour par Thomas Souvignet il y a plus de 8 ans

Je pense qu'on doit pouvoir faire un truc en modifiant le JS chargé en début de frame.

Genre, faudrait test de changer le bouton "Rechercher" avec ça :

document.getElementsByName('_48_INSTANCE_L4EN_iframe').contentWindow.document.getElementById('ext-gen268').name = "Yes"

Mis à jour par Thomas Souvignet il y a plus de 8 ans

J'allais valider ce qui suivi mais je pense que le problème vient de ça :
<script type="text/javascript">
//Thomas

document.addEventListener("DOMContentLoaded", function(event) {
document.getElementsByName('_48_INSTANCE_L4EN_iframe')*[0]*.contentWindow.document.getElementById('ext-gen268').name = "Yes";
});
&lt;/script&gt;

// Post initial

Bon j'ai ajouté ça en fin des javascripts de BDSP.html :

<script type="text/javascript">
//Thomas

document.addEventListener("DOMContentLoaded", function(event) {
document.getElementsByName('_48_INSTANCE_L4EN_iframe').contentWindow.document.getElementById('ext-gen268').name = "Yes";
});
&lt;/script&gt;

Bon l'erreur précédente semble se reproduire même en la prévoyant dans le code initial :

TypeError: document.getElementsByName(...).contentWindow is undefined
bdsp.html:269:31

Mis à jour par Thomas Souvignet il y a plus de 8 ans

OK, code à tester demain au taf :

var clickEvent = new MouseEvent("click", {
"view": window,
"bubbles": true,
"cancelable": false
});

var element = document.getElementsByName('_48_INSTANCE_L4EN_iframe')[0].contentWindow.document.getElementById('ext-gen268');
element.dispatchEvent(clickEvent);

Mis à jour par Thomas Souvignet il y a plus de 8 ans

Error: Permission denied to access property "document"

Je ne peux pas accéder (depuis la console) au document de la frame.

--> Solution, modifier le JS de a.html (le fichier html de la frame) pour y ajouter l'autoreload.

Actions

Formats disponibles : Atom PDF