2012-04-09 15 views
2

Ich möchte das Attribut src für alle Bilder ersetzen, die mit dem Greasemonkey-Scripting einer Regex entsprechen. Beispiel:Bildquelle für alle Bilder ersetzen

ersetzen http://aff.kooora.com/i/z3.gif

Mit http://example.com/aff.kooora.com/i/z3.gif

habe ich keine Erfahrung in Scripting, aber das ist, was ich kam mit:

var allImg=document.getElementsByTagName("img"), i=0, img; 
var pattern = aff\.kooora\.com/([A-Za-z0-9/._]*); 
while(img=allImg[i++]) 
{ 
    result = pattern.exec(img); 
    if (result!=null) 
     img.src=img.src.replace(result, 'http://example.com/' + result); 
} 

Es funktioniert nicht.

Antwort

2

Ihr regulärer Ausdruck ist das Problem, müssen Sie es in Schrägstriche umwickeln (sonst der Dolmetscher hat keine Ahnung, dass es, dass als regexp behandeln sollte):

var allImg=document.getElementsByTagName("img"), i=0, img; 

var pattern = /^http\:\/\/aff\.kooora\.com\/(.*)$/; 

while (img = allImg[i++]) 
{ 
    if (img.src.match(pattern)) { 
     img.src = img.src.replace(pattern, 'http://example.com/aff.kooora.com/$1'); 
    } 
} 
+1

Vielen Dank !! Du hast die Regex nicht richtig verstanden. Dies ist die bearbeitete Arbeitsversion 'var allImg = document.getElementsByTagName (" img "), i = 0, img; var pattern = /^http\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"> while (img = allImg [i ++]) { if (img.src.match (Muster)) { img.src = img.src.replace (Muster, ‚http://example.com/?url = aff.kooora.com/$ 1 '); \t \t \t \t} } ' – Abdullah

+0

Ah ich sehe, die "aff.kooora.com" im Ersatz fehlte - fest, dass! – Niko

3

nur eine Alternative.

In diesem Greasemonkey-Skript, ProxyLoadIMG, wird dies ohne Verwendung von Regex durchgeführt.

Es wurde erstellt, um Bilder über einen Proxy zu laden.
Nur die Bilder. Links und andere Inhalte bleiben unberührt.

var proxy = 'https://proxytea.appspot.com/' 

for (var x=0; x<document.images.length; x++) { 
    imagem = document.images[x]; 
    imagem.src = imagem.src.replace(location.protocol + '//', proxy); 
} 

http://aff.kooora.com/i/any.jpg wird https://proxytea.appspot.com/aff.kooora.com/i/any.jpg
http://aff.kooora.com/i/z3.gifhttps://proxytea.appspot.com/aff.kooora.com/i/z3.gif
und so weiter wird ...

Nein RegEx :)

+0

Es funktionierte perfekt, mit viel weniger Aufwand. Gibt es eine Möglichkeit, die CSS-Datei auch über den Proxy einzuschließen? – Abdullah

+1

Ja. Genau wie 'document.images' eine Sammlung aller Bilder auf der Seite ist, ist 'document.styleSheets' eine Sammlung der Stile. Sie können einen ähnlichen Code verwenden, um das CSS über den Proxy zu laden. – RASG

+1

Dieses Skript macht das gleiche für alle Links statt Bilder http://userscripts.org/scripts/show/77701 und dieser lädt alles über einen zufälligen Proxy http://userscripts.org/scripts/show/77042 – RASG

0

Gebrauch benötigt, um dies:

function replaceImages(oldUrl, newUrl) { 
    var imgs = document.getElementsByTagName('img') 
    for (i = 0; i<imgs.length; i++) { 
     imgs[i].src = imgs[i].src.replace(oldUrl, remoteUrl) 
    } 
} 

replaceImages('http://aff.kooora.com/i/z3.gif', 'http://example.com/aff.kooora.com/i/z3.gif') 

Dies ist auch toll wenn du arbeitest auf einer lokalen Version einer Website und Sie können nicht belästigt werden, um alle ihre Bildinhalte herunterladen