J'ai un problème étrange. J'essaye d'écrire un script GreaseMonkey à exécuter dans Firefox et Google Chrome. Avec Chrome j'ai essayé 2 extensions: "TamperMonkey" et "Blank Canvas Script Handler", principalement parce que mon script vérifie régulièrement une nouvelle version sur un site externe et cela est considéré comme un script inter-site et non autorisé dans Chrome.Chrome ne peut pas lire la valeur de style.display
Pour vous montrer mon problème, j'écris un exemple simple de test:
// ==UserScript==
// @name test
// @namespace http://fgs.ericc-dream.fr.nf
// @description test gm script
// @include http://gaia.fallengalaxy.eu/
// @author ericc
// @version 0.0.1
// ==/UserScript==
/* We attach an event listener to the body tag and trigger the function
* 'message' each time that an element is inserted in the page */
var el = document.body;
el.addEventListener('DOMNodeInserted', message, false);
var extraFlag = false;
function message(event) {
/* first we capture the id of the new inserted element
* (the one who created the event) */
var objId = event.target.id;
/* add an event listener on the map container */
if (objId == "extra") {
el = document.getElementById('extra');
el.addEventListener('DOMSubtreeModified',readTest,false);
GM_log(el.style.display);
}
}
function readTest() {
el = document.getElementById('extra');
GM_log(extraFlag);
GM_log(el.style.display);
if ((el.style.display != 'none') && (!extraFlag)) {
alert('extra');
extraFlag = true;
} else if ((el.style.display == 'none')) {
extraFlag = false;
}
}
l'élément div 'extra' est modifié par la page. Le problème est que Chrome n'est pas capable de lire la valeur de el.style.display et ainsi, extraFlag ne redevient jamais "faux". J'utilise ce drapeau pour éviter d'exécuter le code plusieurs fois, le site est fortement piloté par JavaScript Ce code fonctionne bien dans Firefox!
J'ai essayé d'effectuer une recherche avec Google, mais je ne trouve pas les bonnes réponses. Semble facile de changer la valeur de l'affichage, mais il semble que je suis le seul qui essaie de le lire !!!
je vous écris ce code parce que « DOMAttrModified » est pas pris en charge dans Chrome :-(
Merci d'avance pour votre aide
EricC
informations supplémentaires sur le problème ne devrait pas être affiché comme réponse. Modifiez votre question initiale pour inclure cette information. –