Come si possono trovare tutti gli indirizzi IP in un blocco di testo selezionato con un javascript bookmarklet?

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

Domanda

Sto appena cominciando a imparare javascript, quindi non ho la capacità di capire quello che presumo sia un problema di poco conto.

Sto lavorando con un blog Wordpress che serve come una FAQ per la nostra comunità e sto cercando di mettere insieme alcuni strumenti per semplificare la gestione dei commenti più facile. Internet Duct Tape è Greasemonkey strumenti, come Commento Ninja, sono utili per la maggior parte di esso, ma voglio essere in grado di ottenere un elenco di tutti gli indirizzi IP che stiamo ottenendo i commenti, in modo da permettere di monitorare le tendenze e così via.

Voglio solo essere in grado di selezionare una porzione di testo sulla pagina dei commenti e fare clic su un bookmarklet (http://bookmarklets.com) in Firefox, si apre una finestra con l'elenco di tutti gli indirizzi IP trovati nella selezione.

Aggiornamento:

Ho combinato una delle risposte levik e Giacobbe per venire con questo:

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 differenza è che invece di un avviso messaggio, come in levik la risposta, ho aperto una nuova finestra simile a quella di Jacob risposta.Il avviso non fornire barre di scorrimento che può essere un problema per le pagine con molti indirizzi IP.Tuttavia, ho bisogno che l'elenco sia verticale, a differenza di Giacobbe soluzione, così ho usato il suggerimento da levik di fare un
per il join invece di levik s .

Grazie per tutto l'aiuto, ragazzi.

È stato utile?

Soluzione

In Firefox, si potrebbe fare qualcosa di simile a questo:

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

Come funziona:

  • Ottiene la selezione di testo dal browser ("il documento.getSelection()" in FF, IE sarebbe "documento.selezione.createRange().testo")
  • Si applica una espressione regolare da marzo gli indirizzi IP (come suggerito da Muerr) - e questo si traduce in un array di stringhe.
  • Si unisce a questa array in una stringa separata da restituire caratteri
  • Avvisi per la stringa

Il modo in cui la selezione è un po ' diverso su IE, ma il principio è lo stesso.Per ottenere di essere cross-browser, è necessario verificare che il metodo è disponibile.Si potrebbe anche fare di più complicato di uscita (come creare un galleggiante DIV e inserire tutti gli indirizzi ip in esso).

Altri suggerimenti

Utilizzare espressioni regolari per rilevare l'indirizzo IP.Un paio di esempi:

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

Come un bookmarklet

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

Basta creare un nuovo segnalibro e incollare il codice javascript in

Come fare in Ubiquità

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

Qui è un buon articolo su come ottenere l'indirizzo IP dei visitatori.È possibile visualizzare oltre che per il loro commento, se è voluto o includere un'etichetta o di un campo in una pagina in modo che si può fare riferimento a più tardi.

Avere uno sguardo al rot13 bookmarklet per un esempio di selezione del testo e l'esecuzione di un'azione (in questo caso di sostituzione) quando il bookmarklet che viene cliccato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top