jaymz Opublikowano 20 Lipca 2017 Zgłoś Udostępnij Opublikowano 20 Lipca 2017 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
maggreg Opublikowano 20 Lipca 2017 Zgłoś Udostępnij Opublikowano 20 Lipca 2017 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
jaymz Opublikowano 21 Lipca 2017 Autor Zgłoś Udostępnij Opublikowano 21 Lipca 2017 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
maggreg Opublikowano 21 Lipca 2017 Zgłoś Udostępnij Opublikowano 21 Lipca 2017 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
jaymz Opublikowano 21 Lipca 2017 Autor Zgłoś Udostępnij Opublikowano 21 Lipca 2017 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łaZielony: 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
maggreg Opublikowano 22 Lipca 2017 Zgłoś Udostępnij Opublikowano 22 Lipca 2017 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
jaymz Opublikowano 25 Lipca 2017 Autor Zgłoś Udostępnij Opublikowano 25 Lipca 2017 Bardzo dziękuję za pomoc - skrypt działa perfekcyjnie! Odnośnik do komentarza
Rekomendowane odpowiedzi
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ę