Personalize páginas da web com o GreaseMonkey
![](http://img.brin-designs.com/img/games/928/personalize-web-pages-with-greasemonkey.png)
O que é o GreaseMonkey?
O GreaseMonkey é uma extensão do Firefox que permite ajustar as páginas da web que você visita.
Ou seja, ele irá mudar a página diretamente no navegador.
Isso permite que você altere à vontade todas as páginas de qualquer site como desejar: remova itens de que não gosta, edite o HTML, adicione o código HTML, altere / adicione / remova o javascript, altere cores, adicione recursos, aumente ou diminuir o tamanho das tabelas, formulários etc ...
Exemplo 1
Este script irá modificar as páginas do Kioskea para ampliar o campo de mensagens nos fóruns.
// Este script está em domínio público.
//
// == UserScript ==
// @name KIOSKEA-Forums
// @namespace WEBSITE
// @description Modificar páginas da web de ccm
// @include //ccm.net/*
// @include //www.commentcamarche.com/*
// @include //www.commentcamarche.net/*
// == / UserScript ==
(function () {
// Remove todas as ocorrências de elementos cujo XPath é fornecido do documento.
//
// Exemplo: remova todas as tabelas que usam a classe CSS 'toto':
// removeElement ("// table [@ class = 'toto']");
função removeElement (ElementXpath)
{
var alltags = document.evaluate (ElementXpath, documento, nulo, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, nulo);
para (i = 0; i { element = alltags.snapshotItem (i); element.parentNode.removeChild (element); // Remove este elemento do seu pai. } } // Remove um atributo de todas as ocorrências de elementos cujo XPath é fornecido. // (todas as ocorrências deste elementos são processadas). // // Exemplo: remova o bgcolor de todos // removeAttributeOfElement ('bgcolor', "// table [@bgcolor]") // Remove o fixo de todas as tabelas ou células :: // removeAttributeOfElement ('width', "// table [@width] | // td [@width]") function removeAttributeOfElement (attributeName, ElementXpath) { var alltags = document.evaluate (ElementXpath, documento, nulo, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, nulo); para (i = 0; i alltags.snapshotItem (i) .removeAttribute (attributeName); } // Define um atributo de todas as ocorrências de elementos para um valor especificado. // O valor anterior deste atributo é descartado. // (todas as ocorrências deste elementos são processadas). // // Exemplo: defina com 80 colunas em todas as texteareas: // setAttributeOfElement ('cols', 80, "// textarea") function setAttributeOfElement (attributeName, attributeValue, ElementXpath) { var alltags = document.evaluate (ElementXpath, documento, nulo, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, nulo); para (i = 0; i alltags.snapshotItem (i) .setAttribute (attributeName, attributeValue) } // Informe seu próprio CSS na página. // Exemplo: não sublinhar link: // injectCSS ("a {text-decoration: none;}") function injectCSS (cssdata) { head = document.getElementsByTagName ("head") [0]; style = document.createElement ("style"); style.setAttribute ("type", 'text / css'); style.innerHTML = cssdata; head.appendChild (estilo); } experimentar { // Aumentando o campo da mensagem setAttributeOfElement ('rows', '40', "// textarea [@ name = 'message']"); setAttributeOfElement ('cols', '120', "// textarea [@ name = 'message']"); // Na lista de discussão, colocamos em negrito a discussão que não recebeu nenhuma resposta. setAttributeOfElement ('style', 'font-weight: negrito;', "// td [text () = '0'] /../ td [1] / a"); } captura (e) { alert ("exceção do UserScript: \ n" + e); } }) (); A parte mais importante do script é: Essas duas linhas alteram o tamanho (linhas, cols) da caixa de texto (área de texto) usada para digitar mensagens (identificadas por nome = "mensagem"). Ele usa XPath (/ / textarea ...) para selecionar o elemento no qual atuar. O XPath é uma maneira de designar elementos específicos de uma página HTML, mas seu uso não é obrigatório. Você pode percorrer os métodos DOM tradicionais (.GetElementsByTagName () e, em seguida, fazer um loop for, etc.). Este script também contém esta linha: Na área de discussão do fórum, isso adicionará títulos em negrito às discussões que não foram respondidas. O XPath: - Selecione as células da tabela contendo o texto "0" (td [text () = '0']) - Volte ao nível - Continuamos no primeiro - Colocamos em negrito todos os links (/ a) contidos neste Alguns exemplos: - Selecione todas as imagens: / / img - Selecione todas as imagens sem bordas: / / img [@ border = '0'] - Selecione todos os links que apontam para o Google: / / a [@ href = '//google.com'] - Selecione Todos os links para o Google e contenha o texto "Link para o Google: // a [@ href = '//google.com" e contém (., "Link para o Google"]] - Selecione todos os links: / / a - Selecione apenas as imagens que ligam: / / a / img - Selecione apenas os links colocados diretamente em uma célula da tabela: / / td / a - Selecione apenas o primeiro link colocado diretamente em uma célula da tabela: / / td / a [1] - Selecione apenas o último link colocado diretamente em uma célula da tabela: / / td / a [last ()] - Selecione todas as células da tabela contendo o texto exato "Hello": / / td [text () = 'Hello'] - Selecione todas as células da tabela contendo (em algum lugar no texto) a palavra "Hello": / / td [contains (., 'Hello')] - Selecione todas as células da tabela começando com o texto "Hello": / / td [starts-with (., 'Hello')] - Selecione todas as tabelas contendo uma célula contendo a palavra "foo": / / td [contém (., 'Hello')] /../ .. (O primeiro / .. de volta no - Selecione todas as células na segunda coluna das tabelas: / / tr / td [2] - Selecione todas as células na última coluna das tabelas: / / tr / td [last ()] - Selecione as células nas colunas 1, 2 e 3 tabelas: / / tr / td [position () <= 3] - Selecione todas as tabelas com pelo menos um atributo: / / table [@ *] - Selecione todas as tabelas com a largura do atributo: / / table [@ width] - Selecione todas as tabelas com uma largura de 400px: // table [@ width = '400px'] - Selecione todas as tags que são filhas diretas de uma célula: / / td / * - Selecione todos os links que são diretamente filho de uma célula: / / td / a - Selecione o segundo link é o filho direto de uma célula: / / td / a [1] - Selecione o primeiro tag em uma célula, o que é: / / td / * [1] - Selecione a primeira tag com um atributo onload: / / td / * [@ onload] - Selecione a tag sendo uma tag depois de p no código html: / / p / following :: a - Selecione as tags que são imediatamente meninas tag p: / / p / a - Selecione qualquer tag contida na tag ap (independentemente da profundidade) / / p / descendente :: a - Selecione todas as tags que estão após a tag p, mas no mesmo nível: / / p / seguinte-irmão: a No Firefox, você pode usar o DOM Inspector para ajudá-lo a encontrar os elementos para selecionar (CTRL + SHIFT + I). Você também pode usar a extensão para testar suas expressões XPath XPath. O script ccm.user.js contém 4 classes de utilitários para facilitar sua vida: removeElement (path) : remove um item da página. removeAttributeOfElement (nomattribut Road) : remove o atributo de um elemento. s etAttributeOfElement (nomattribut, value, path) : adiciona ou modifica o atributo de um elemento injectCSS () : injete seu próprio CSS em uma página. Caminho é o caminho do elemento XPath. Exemplos: Para apagar o lixo, seria: removeElement ('/ / td / span [@ class =' comment ']'); Para deletar cell (td) contendo aquele blabla: removeElement ('/ / td / span [@ class =' comment '] / ..'); Para apagar todos os comentários, mesmo que eles não estejam em uma célula da tabela, isso seria: removeElement ('/ / span [@ class =' comment ']'); Para remover o tamanho indicado nesta tabela: removeAttributeOfElement ('width', '// table [@ bgcolor =' # ffe ']'); Para forçar a largura da tabela: setAttributeOfElement ('width', '100%', '// table [@ bgcolor =' # ffe ']'); Para alterar a fonte padrão em uma página da web: injectCSS ('body (font-family: Verdana, sans-serif;)'); Extensão GreaseMonkey: //addons.mozilla.org/fr/firefox/addon/748 Manual do GreaseMonkey: //diveintogreasemonkey.org/ Nota : Escrever scripts GreaseMonkey nem sempre é fácil (deve conter Javascript, DOM, HTML, CSS e XPath opcionalmente). Platypus é uma extensão do Firefox que permite gerar scripts automaticamente GreaseMonkey: //addons.mozilla.org/fr/firefox/addon/737 Mas o Platypus tem uma tendência a gerar código Javascript que é bastante lento e pesado.
:
setAttributeOfElement ('rows', '40', "// textarea [@ name = 'mensagem']"); setAttributeOfElement ('cols', '120', "// textarea [@ name = 'message']");
Exemplo 2
setAttributeOfElement ('style', 'font-weight: negrito;', "// td [text () = '0'] /../ td [1] / a"); }
( / .. ) cell (que contém o título) ( / td [1] ) . XPath
e / .. seguintes datas no )
Serviços de utilidade pública
removeElement ()
...
blablabla ... removeAttributeOfElement ()
...
...
setAttributeOfElement ()
...
...
injectCSS ()
Links
Principais Dicas