[Greasemonkey / Javascript] Scammer-Script

11/05/2012 13:57 stippy#1
Hi, ich bin gerade dabei ein Greasemonkey-Script zu erstellen(Für mich Privat), welches bekannte Scammer hier im ePvP-Forum mit einem [Scammer], [Untrusted]-Tag hinter den Namen tagged. Bekannte Skype und ICQ-Namen/Nummern werden auch getaggt mit: [Scammer-ICQ] & [Scammer-Skype]. Aber jetzt zu mein Problem:

Das Script an sich funktioniert Super. nur jetzt würde ich gern' die tags gegen Icons oder Grafiken ersetzten, weil die länge der Tags + Namen manchmal die Seite ganz schön in die Breite zieht.

Das Script sieht derzeit folgendermaßen aus:

PHP Code:
// ==UserScript==
// @name           ePvP-Scammer tagging
// @description    Replaces Names from Scammers @ ePvP-Board with Scammer-Taggs
// @include        *elitepvpers.com/forum/*
// @copyright      M3MPHiZ / Stippy
// @version        1.0.0
// @license        http://creativecommons.org/licenses/by-nc-nd/3.0/us/
// @grant          none
// ==/UserScript==


var scammer " [Scammer]"
var untrusted " [Untrusted]"
var scammerICQ " [Scammer-ICQ]"
var scammerSkype " [Scammer-SKYPE]"

var words = {
// Scammer

"SchwiegertochterGesucht" scammer,
///////////////////////////////////////////////////////
"":""};


String.prototype.prepareRegex = function() {
    return 
this.replace(/([\[\]\^\&\$\.\(\)\?\/\\\+\{\}\|])/g"\\$1");
};

function 
isOkTag(tag) {
    return (new 
RegExp("(," tag ",) | (," tag "$)""g").test(",pre,blockquote,code,input,button,textarea")) == false;
}

var 
regexs=new Array(),
    
replacements=new Array();
for(var 
word in words) {
    if(
word != "") {
        
regexs.push(new RegExp(word.prepareRegex().replace(/(\\)?\*/g, function(e) {return ((!== "\\*") ? "[^ ]*" "*");}), "gi"));
        
replacements.push([word] + words[word]);
    }
}

var 
texts document.evaluate(".//text()[normalize-space(.)!='']",document.body,null,6,null), text=""len=regexs.length;
for(var 
i=0,l=texts.snapshotLength; (this_text=texts.snapshotItem(i)); i++) {
    if(
isOkTag(this_text.parentNode.tagName) && (text=this_text.textContent)) {
        for(var 
x=0x<lenx++) text this_text.textContent text.replace(regexs[x], replacements[x]);
    }

Also, die Tags sollen nur durch Grafiken/Icons ersetzt werden. Vielelicht könnte mir ja jemand bei meinen Problem helfen, bin nicht so die Leuchte was Js angeht. Würde denjenigen auch meine restlichen 20eG geben ^^

Mfg. Stippy
11/05/2012 15:11 マルコ#2
Wenn du die Bilder irgendwo hochlädst, dann könntest du doch einfach statt "[untrusted]" und so davor zu schreiben, nen img Tag davor setzen

Code:
<img src="http://mydomain.de/untrusted.png" alt="untrusted" />
Also im Prinzip die ersten paar vars austauschen, die da ganz oben stehen..

Code:
var scammer = ' <img src="http://mydomain.de/scammer.png" alt="scammer" />';
var untrusted = ' <img src="http://mydomain.de/untrusted.png" alt="untrusted" />';
var scammerICQ = ' <img src="http://mydomain.de/scammerICQ.png" alt="scammerICQ" />';
var scammerSkype = ' <img src="http://mydomain.de/scammerSkype.png" alt="scammerSkype" />';
11/05/2012 15:30 stippy#3
Quote:
Originally Posted by マルコ View Post
Wenn du die Bilder irgendwo hochlädst, dann könntest du doch einfach statt "[untrusted]" und so davor zu schreiben, nen img Tag davor setzen

Code:
<img src="http://mydomain.de/untrusted.png" alt="untrusted" />
Also im Prinzip die ersten paar vars austauschen, die da ganz oben stehen..

Code:
var scammer = ' <img src="http://mydomain.de/scammer.png" alt="scammer" />';
var untrusted = ' <img src="http://mydomain.de/untrusted.png" alt="untrusted" />';
var scammerICQ = ' <img src="http://mydomain.de/scammerICQ.png" alt="scammerICQ" />';
var scammerSkype = ' <img src="http://mydomain.de/scammerSkype.png" alt="scammerSkype" />';
Das hab' ich schon versucht, leider wird bei der Ausgabe nur der reine text ausgegeben. Also, anstelle des Bildes steht dort:
Quote:
ScammerName '<img src="http://host.com/icon.gif" alt="scammer" />';
LG
11/05/2012 15:46 boxxiebabee#4
Warum nicht einfach über den Namen das gewünschte Wort hinschreiben? Ist auch übersichtlicher bzw. man erkennt es leichter:

[Only registered and activated users can see links. Click Here To Register...]

:P
11/05/2012 17:23 stippy#5
Ok, geht egtl auch :) Ich geb euch beiden dafür 10eG wenn's recht ist. Ist zwar ned das gewünschte ergebnis, aber damit kann ich auch leben ^^

Zeile 137 einfach in folgendes abgeändert:

Code:
replacements.push(words[word] + "\r\n" + [word]);
LG
11/05/2012 19:02 BlackTrader#6
du solltest scammer über ihre ID und nicht über ihren Namen erkennen :/

bsp du: [Only registered and activated users can see links. Click Here To Register...]
ID: 974189

deine ID bleibt gleich, auch wenn du den Namen änderst, denk ich zumindist
11/05/2012 22:42 stippy#7
Quote:
Originally Posted by BlackTrader View Post
du solltest scammer über ihre ID und nicht über ihren Namen erkennen :/

bsp du: [Only registered and activated users can see links. Click Here To Register...]
ID: 974189

deine ID bleibt gleich, auch wenn du den Namen änderst, denk ich zumindist
Wäre auch 'ne Möglichkeit. Nur, mir läuft's kalt den Rücken herunter, wenn ich an des RegEx-Gefummel denke :D
11/05/2012 22:46 boxxiebabee#8
Quote:
Originally Posted by stippy View Post
Wäre auch 'ne Möglichkeit. Nur, mir läuft's kalt den Rücken herunter, wenn ich an des RegEx-Gefummel denke :D
Du brauchst eig. garkein Regex. Einfach mit z.B. jquery alle Links mit der Klasse "bigusername" holen, und den src auswerten mit z.B. if(url.indexOf(id) != -1)
11/06/2012 07:48 Synatex#9
Kannst auch einfach getElementsByClass benutzen, musst nicht ein extra Framework mit reinladen.
11/06/2012 09:53 vony#10
Würde jQuery importieren und das damit austauschen, ist immernoch das einfachste.
Weiterhin würde ich die Namensliste von einem Server oder sonstwas nachladen, dann kann man die einfacher pflegen und muss nicht jedes mal das Skript aktualisieren.
11/06/2012 18:44 stippy#11
Eijeijei.. klingt alles etwas kompliziert :D Ich denke, dass mir das Script - so wie es gerade ist - ausreichen tut. Hätte halt nur gern' den Text gegen eine Grafik ausgetauscht, aber dazu möchte ich das Script nun nicht komplett umbauen^^ Hatte ja im Startpost erwähnt, dass Javascript nicht zu meinen stärken gehört :P Aber dennoch danke für die Antworten :)