Wie können Sie alle IP-Adressen in einem ausgewählten Textblock mit einem Javascript Bookmarklet finden?

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

Frage

Ich bin gerade erst Javascript zu lernen, so dass ich nicht über die Fähigkeiten, um herauszufinden, was ich davon ausgehen, ein triviales Problem ist.

Ich arbeite mit einem Wordpress-Blog, das für unsere Gemeinschaft als FAQ dient und ich versuche, einige Werkzeuge an einem Strang ziehen die Kommentare zu erleichtern die Verwaltung. Internet Duct Tape von Greasemonkey-Tools, wie Kommentar Ninja , sind nützlich für die meisten, aber ich möchte in der Lage sein, eine bekommen Liste aller IP-Adressen, die wir Kommentare von um immer Trends zu verfolgen und so weiter.

Ich möchte nur in der Lage eine Reihe von Text auf der Kommentarseite zu wählen und ein Bookmarklet klicken ( http: // Bookmarklets. com ) in Firefox, die ein Fenster in der Auswahl finden Sie alle IP-Adressen-Eintrag erscheint.

Update:

I kombiniert Art von Antworten von Levik und Jacob mit diesem kommen:

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)

Der Unterschied besteht darin, dass anstelle eines alert Nachricht, wie in Levik Antwort, ich öffne ein neues Fenster ähnlich wie Jacob Antwort. Die alert bietet keine Scrollbalken, die ein Problem für Seiten mit vielen IP-Adressen sein. Allerdings habe ich die Liste benötigt senkrecht zu sein, im Gegensatz zu Jakobs Lösung, so habe ich den Hinweis von Levik ist ein
für den Join statt Levik des \ n zu machen.

Vielen Dank für all die Hilfe, Jungs.

War es hilfreich?

Lösung

In Firefox, Sie so etwas tun könnte:

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

Wie das funktioniert:

  • Ruft die Auswahl Text aus dem Browser ( "document.getSelection ()" in FF, in IE wäre es "document.selection.createRange (). Text")
  • Wendet einen regulären Ausdruck die IP-Adressen zu marschieren (wie von Muerr vorgeschlagen.) - dies führt zu einer Reihe von Zeichenketten
  • tritt dieses Array in eine Zeichenfolge, die durch Rücklaufzeichen getrennt
  • Eine Benachrichtigung, dass Zeichenfolge

Die Art und Weise Sie die Auswahl bekommen, ist ein wenig anders auf IE, aber das Prinzip ist das gleiche. Um es Cross-Browser sein, würden Sie müssen prüfen, welche Methode zur Verfügung steht. Sie können auch kompliziertere Ausgabe tun (wie ein Floating-DIV erstellen und legen Sie alle IP-Adressen in it).

Andere Tipps

Verwenden Sie einen regulären Ausdruck der IP-Adresse zu ermitteln. Ein paar Beispiele:

/\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})+$/

Als Bookmarklet

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

Sie einfach ein neues Lesezeichen erstellen und die JavaScript einfügen in

Wie es in Ubiquity tun

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"));
        }
    }
})

Hier ist ein guter Artikel über die IP-Adresse der Besucher zu erhalten. Sie können dies auf seinen eigenen Kommentar zusätzlich angezeigt werden, wenn man will oder schließen es als Etikett oder Feld in Ihrer Seite, so dass Sie es später verweisen können.

Haben Sie einen Blick auf die rot13 Bookmarklet ein Beispiel für Text markieren und eine Aktion durchführt (in diesem Fall die Substitution), wenn der bookmarklet geklickt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top