Skocz do zawartości

Jak to zrobić - userscript podmiana jednego linka na inny


jaymz

Rekomendowane odpowiedzi

Potrzebuję przy użyciu userscript podmienić jeden link na drugi
 
http://www.site.com/index.php?page=tnap&action=outgoingLink&out_url=http://www.somesite.com/tour/content/agn001&class=pages- na: http://www.somesite.com/index/archive/agn001
 
Na razie uzyskałem: http://www.somesite.com/index/archive/agn001&class=pages
 
ale jak usunąć "&class=pages" na końcu?

 

 

// ==UserScript==
// @name skrypt
// @namespace http://www.site.com/
// @version 1.0
// @description try to take over the world!
// @author You
// @match www.site.com/*
// @include www.site.com/*
// @exclude
// @grant none
// ==/UserScript==

var links,thisLink;
links = document.evaluate("//a[@href]",
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null);
for (var i=0;i var thisLink = links.snapshotItem(i);

thisLink.href = thisLink.href.replace('http://www.site.com/index.php?page=tnap&action=outgoingLink&out_url=http://www.somesite.com/tour/content/agn001&class=pages'
'http://www.somesite.com/index/archive/');
}

;i++)>

Odnośnik do komentarza
Pomoc jest darmowa, ale proszę rozważ przekazanie dotacji na utrzymanie serwisu: klik.

Nie do końca rozumiem koncepcję, co ze starego linku chcesz zostawić a co wyrzucić ale może mały przykład z użyciem regex Cię naprowadzi na własne rozwiązanie.

 

var allLinks = document.querySelectorAll('a');
                for (var i = 0, len = allLinks.length; i<len; i=i+1) {
                                 link = allLinks[i].href.match(/(?:&|\/|\?)class=(.*?)$/) [1];
                        allLinks[i].href = link;
                }

Powyższy przykład zachowa wszystko co się znajduje za "class=" jako przy okazji pilnując, żeby to było ostatnie wystąpienie takiego ciągu w adresie.

Jeżeli ciąg się nie powtarza można uprościć składnię:

 

link = allLinks[i].href.match(/class=(.*)$/) [1];

i odwrotnie

 

link = allLinks[i].href.match(/^(.*)&class=/) [1];

zachowa wszystko przed wystąpieniem "&class"

Oczywiście możesz połączyć wynik ze swoim stringiem:

 

allLinks[i].href = "mój ciąg" + link;

 

pzdr

Odnośnik do komentarza

Dzięki za podpowiedź, niestety ja kompletnie nie znam się na kodzie javascript, powyższy skrypt znalazłem w sieci i podstawiłem swoje linki.

 

Chcę z "http://www.site.com/index.php?page=tnap&action=outgoingLink&out_url=http://www.somesite.com/tour/content/agn001&class=pages"- utworzyć "http://www.somesite.com/index/archive/agn001"

 

Po wstawieniu w skrypt "http://www.somesite.com/index/archive/"- otrzymuję "http://www.somesite.com/index/archive/agn001&class=pages"

 

i potrzebuję jeśli to możliwe dopisać coś do mojego kodu żeby usunąć na końcu "&class=pages" - żeby otrzymać "http://www.somesite.com/index/archive/agn001"

 

Jak wcześniej napisałem nie znam się na tym, i potrzebuję gotowego kodu, bo np to:

allLinks[i].href = "mój ciąg" + link;

nie wiem gdzie dopisać.

 

Z góry dziękuję za pomoc.

Odnośnik do komentarza

Jeżeli wszędzie ma być na sztywno ten sam ciąg (bez wykorzystania fragmentu starego adresu) to jest to banalnie proste, nie musisz nic podmieniać po prostu ustawiasz linki na nowy adres:

 

var allLinks = document.querySelectorAll('a');
                for (var i = 0, len = allLinks.length; i<len; i=i+1) {
                        allLinks[i].href = "http://www.somesite.com/index/archive/agn001";
                }

 

pzdr

Odnośnik do komentarza

Musi być stary link ponieważ a (zapomniałem napisać) :
 

http://www.site.com/index.php?page=tnap&action=outgoingLink&out_url=http://www.somesite.com/tour/content/agn001&class=pages

 
Czerwony: ta część jest stała
Zielony: zmienna

 

I  chcę go zamienic na:

 

http://www.somesite.com/index/archive/agn001

 

A mój skrypt podmienia na:

 

http://www.somesite.com/index/archive/agn001&class=pages
Odnośnik do komentarza

No i od początku trzeba było napisać o co chodzi.

To wracamy do regex tyle, że tym razem wiemy co chcemy:

 

var allLinks = document.querySelectorAll('a');
                for (var i = 0, len = allLinks.length; i<len; i=i+1) {
                                 link = allLinks[i].href.match(/(?!.*\/)(.+)&/) [1];
                        allLinks[i].href = "http://www.somesite.com/index/archive/"+ link;
                }

 

pzdr

Odnośnik do komentarza

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...