Comment trouver toutes les adresses IP d'un bloc de texte sélectionné avec un bookmarklet javascript?

StackOverflow https://stackoverflow.com/questions/72921

Question

Je commence tout juste à apprendre le javascript, je n'ai donc pas les compétences nécessaires pour comprendre ce que je suppose être un problème trivial.

Je travaille avec un blog Wordpress qui sert de FAQ à notre communauté et j'essaie de rassembler quelques outils pour faciliter la gestion des commentaires. Les outils Greasemonkey d'Internet Duct Tape, tels que Comment Ninja , sont utiles dans la plupart des cas, mais je veux pouvoir obtenir une liste de toutes les adresses IP dont nous obtenons les commentaires afin de suivre les tendances, etc.

Je veux juste pouvoir sélectionner un tas de texte sur la page de commentaires et cliquer sur un bookmarklet ( http: // bookmarklets. com ) dans Firefox, une fenêtre contenant toutes les adresses IP de la sélection apparaît.

Mise à jour:

J'ai en quelque sorte combiné les réponses de levik et de Jacob pour en arriver à ceci:

javascript:ipAddresses=document.getSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g).join("<br>");newWindow=window.open('', 'IP Addresses in Selection', 'innerWidth=200,innerHeight=300,scrollbars');newWindow.document.write(ipAddresses)

La différence est qu'au lieu d'un message alerte , comme dans la réponse de levik, j'ouvre une nouvelle fenêtre similaire à celle de Jacob. L’alerte ne fournit pas de barres de défilement, ce qui peut poser problème pour les pages comportant de nombreuses adresses IP. Cependant, j'avais besoin que la liste soit verticale, contrairement à la solution de Jacob, j'ai donc utilisé l'allusion de levik pour créer un
pour la jointure au lieu de \ n .

Merci pour votre aide, les gars.

Était-ce utile?

La solution

Dans Firefox, vous pouvez faire quelque chose comme ceci:

javascript:alert(
  document.getSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g)
  .join("\n"))

Comment cela fonctionne:

  • Obtient le texte de sélection du navigateur ("document.getSelection ()" dans FF, dans IE, il s'agirait de "document.selection.createRange (). text")
  • Applique une expression régulière pour défiler les adresses IP (comme suggéré par Muerr). Il en résulte un tableau de chaînes.
  • joint ce tableau en une chaîne séparée par des caractères de retour
  • Alerte cette chaîne

La manière dont vous obtenez la sélection est un peu différente sur IE, mais le principe est le même. Pour que ce soit multi-navigateur, vous devez vérifier quelle méthode est disponible. Vous pouvez également créer des sorties plus complexes (comme créer une DIV flottante et y insérer toutes les adresses IP).

Autres conseils

Utilisez une expression régulière pour détecter l'adresse IP. Quelques exemples:

/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/
/^([1-9][0-9]{0,2})+\.([1-9][0-9]{0,2})+\.([1-9][0-9]{0,2})+\.([1-9][0-9]{0,2})+$/

En tant que bookmarklet

javascript:document.write(document.getSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g))

Créez simplement un nouveau signet et collez ce javascript dans

Comment le faire dans Ubiquity

CmdUtils.CreateCommand({
    name: "findip",
    preview: function( pblock ) {
        var msg = 'IP Addresses Found<br/><br/> ';
        ips = CmdUtils.getHtmlSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g);
        if(ips){
            msg += ips.join("<br/>\n");
        }else{
            msg += 'None';
        }
        pblock.innerHTML = msg;
    },

    execute: function() {
        ips = CmdUtils.getHtmlSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g);
        if(ips){
            CmdUtils.setSelection(ips.join("<br/>\n"));
        }
    }
})

Voici un bon article sur l'obtention de l'adresse IP de vos visiteurs. Vous pouvez l'afficher en plus de leur commentaire si vous le souhaitez ou l'inclure sous forme d'étiquette ou de champ dans votre page afin que vous puissiez le référencer plus tard.

Consultez le rot13 bookmarklet . pour un exemple de sélection de texte et d’exécution d’une action (dans ce cas, substitution) lorsque vous cliquez sur le bookmarklet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top