Estou tentando remover um div desta página com o TamperMonkey.
Este código funciona bem com o console chrome DevTools
var elems = document.getElementsByClassName('hdn hdb-m hfl-m');
elems[0].parentNode.removeChild(elems[0]);
mas não funciona com o TamperMonkey
// ==UserScript==
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match http://*/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var elems = document.getElementsByClassName('hdn hdb-m hfl-m');
elems[0].parentNode.removeChild(elems[0]);
})();
o que estou perdendo?
Não posso dizer exatamente, mas meu palpite é que o site gera parte de seu conteúdo por JavaScript após a execução do script. Por padrão , os scripts tampermonkey são executados quando a página HTML é carregada e analisada. Mas o mesmo acontece com a maioria dos códigos que geram páginas por JavaScript. Assim, você pode ver como seu script pode ser executado antes que o elemento que deseja excluir seja gerado.
A solução mais preguiçosa é usar algum cronômetro para atrasar a execução, mas espere uma contração feia ao remover o elemento após o tempo limite. Exemplo:
O método mais avançado seria usar MutationObserver , que pode acionar o código IMEDIATAMENTE conforme ocorre uma alteração na página. Você pode tentar isso, é mais trabalhoso, mas muito mais elegante.