edycja kodu strony skryptem

w dziale Aplikacje dla Opery
ketchup3 napisał(a):

witam,
chciałbym zrobić coś następującego:
mam na stronie dajmy na to taki kod:

<a href="pokaz.php?obraz=2"><img src="thumb_obrazek.jpg"></a>

chyba kazdy wie jak to bedzie wyglądać. Czy ktoś może doradzić mi jak osiągnąć następujący efekt:
<a href="obrazek.jpg"><img src="thumb_obrazek.jpg"></a>


z gory dziekuje wink

Zajec napisał(a):

Originally posted by ketchup3:

witam,
chciałbym zrobić coś następującego:
mam na stronie dajmy na to taki kod:


chyba kazdy wie jak to bedzie wyglądać. Czy ktoś może doradzić mi jak osiągnąć następujący efekt:


Doradzić zawsze, tylko ostrzegam, że czeka Cię mimo wszystko trochę nauki DOM.

Przede wszystkim musisz do jakiejś zmiennej przypisać wszystkie takie odnośniki, które chcesz znaleźć i zmodyfikować. Najwygodniej będzie najpierw złapać element je zawierający (np. dzięki getElementById), a następnie wyszukać je używając getElementsByTagName.

Potem trzeba przez wszystkie znalezione elementy przejechać for'em (jak po tablicy) zmieniając odpowiednie atrybuty za pomocą setAttribute.

Zaufany napisał(a):

Bez podania kodu całej strony dokładniejszych informacji nie dostaniesz. Poza tym zakładam, że chodzi ci o UserJavaScript.

_eP napisał(a):

Originally posted by Big_Z:

Bez podania kodu całej strony dokładniejszych informacji nie dostaniesz. Poza tym zakładam, że chodzi ci o UserJavaScript.



Bardziej od kodu calej strony wazniejsza jest informacja czy chodzi o pojedynczy element lub elementy rozrzucone na roznych poziomach hierarchii czy tez o wiele elementow na tym samym poziomie/galezi na ktorych wygodnie operowac w petli. W pierwszym przypadku zamiast filtrowac rozymi warunkami wiele rozych odnosnikow moze byc latwiej zlokalizowac ich polozenie w drzewie documentu ( o ile jest ono stale i nie posiadaja one swoich unikalnych id) i dobierac sie do nich indywidualnie.

Najtrudniej jest doradzac gdy nie wiadomo o co dokladnie chodzi pytajacemu, jaki jest jego zasob wiedzy i jakie checi do jego poglebienia.
Najbardzie trywialna odpowiedz to po prostu zmiana wlasciwosci href elementu odnosnika A. Tylko ze tutaj wszyscy zakladamy ze pytajacemu rozchodzi sie o jakies rozwiazanie systemowe - sposob postepowania, a nie o jedna wlasciwosc jednego elementu.

ketchup3 napisał(a):

generalnie sa to obiekty w jednej duzej ramce, a kazdy odnosnik znajduje sie w kolejnej osobnej ramce. Jak ktoś nie moze sobie tego wyobrazic to mniej wiecej wyglada to tak:
<--jakieś teksty-->
<table><tr><td>
<table><tr><td>a href="pokaz.php?obr=1"><img src="thumb_brazek1.jpg"></a>
</td>
<td> itd..
</table></table>
<--reszta dokmentu-->
nie ma tam zadnego tagu id, mozna jedynie sciagac obiekty po klasach (podejrzewam ze jest to mozliwe?).

Poki co, moznaby zrobic takie cos:
document.repace("/thumb_","/");
zadziała?
PS. wystarczy zapisac to jako dowolny plik *.js i wyznaczyc w preferencjach witryny katalog z plikami *.js?

_eP napisał(a):

Originally posted by ketchup3:


...
nie ma tam zadnego tagu id, mozna jedynie sciagac obiekty po klasach (podejrzewam ze jest to mozliwe?).

Poki co, moznaby zrobic takie cos:
document.repace("/thumb_","/");
zadziała?
PS. wystarczy zapisac to jako dowolny plik *.js i wyznaczyc w preferencjach witryny katalog z plikami *.js?



No to juz wiemy iz Koledze nie obce sa id tagi klasy itd.

document nie posiada ( o ile mi wiadomo ) metody replace().

Jako przyklad lokalizacji po tagach podam fragment kodu swojego user.js

switch(location.hostname)
{
case "www.eetimes.com":
wn=document.body.getElementsByTagName("TABLE")
wn2=wn[1].getElementsByTagName("TABLE")
wn3=wn2[2].getElementsByTagName("TD")
wn3t=wn2[2].getElementsByTagName("TABLE")
wn3[2].style.backgroundColor="#c0F070";//='none';
wn3t[0].lastChild.lastChild.style.backgroundColor="#F0c070";//='none';



Powyzszy sposob wyszukiwania jest przydatny gdy chcemy dotrzec do konkretnej tabeli w konkretnym miejscu.
Jezeli jednak odnosnikow jest wiele i sa rozrzucone po calym dokumencie oraz latwo bedzie je przefiltrowac (lub nawet zupelnie nie trzeba bedzie tego robic, bo zmiana bedzie dotyczyc wszystkich) to po prostu mozna zebrac je wszystkie razem w ten sposob:
wn=document.body.getElementsByTagName("A");
a potem element po elemencie dokonywac poprawek ich wlasciwosci href w petli:

wn[ j ].href=...



ketchup3 napisał(a):

Jezeli jednak odnosnikow jest wiele i sa rozrzucone po calym dokumencie oraz latwo bedzie je przefiltrowac (lub nawet zupelnie nie trzeba bedzie tego robic, bo zmiana bedzie dotyczyc wszystkich) to po prostu mozna zebrac je wszystkie razem w ten sposob:
wn=document.body.getElementsByTagName("A");
a potem element po elemencie dokonywac poprawek ich wlasciwosci href w petli:

wn[ j ].href=...



tak, to rozumiem i nawet do tego doszedlem, jednak natrafilem na problem jak znaleźć odpowiadający konkretnemu linkowi obrazek. I po drugie jak przekazac do odnosnika adres tego konkretnego obrazka.
ps, nie lepiej bedzie to zrobic w css? Tak tylko pytam dla jasnosci, nie znam sie na tym wink

_eP napisał(a):

Originally posted by ketchup3:

tak, to rozumiem i nawet do tego doszedlem, jednak natrafilem na problem jak znaleźć odpowiadający konkretnemu linkowi obrazek. I po drugie jak przekazac do odnosnika adres tego konkretnego obrazka.ps, nie lepiej bedzie to zrobic w css? Tak tylko pytam dla jasnosci, nie znam sie na tym



To jak znalezc to juz calkiem zupelnie inny problem. W pytaniu ktore postawiles na wstepie bylo jasnym ze ten obrazek znalazles i tylko potrzebujesz odnalezc odpowiedni element odnosnika aby go o tym poinformowac (zmienic mu wlasciwosc href).


ketchup3 napisał(a):

nie chciało mi sie z tym meczyc wink
zrobilem po prostu prosty programik w delphi ktory wykonuje mniej wiecej taka operacje jaka chcialem (tzn. mozna ogladac pelnowymiarowe obrazki). Musze tylko przejsc do zrodla strony, skopiowac wszystko do programu, nacisnac przycisk, wkleic spowrotem i zastosowac zmiany. Troche kombinowania ale dziala wink
Dzieki wszystkim za pomoc. Temat mozna zamknac.

daroc napisał(a):

Trochę kombinowania naokoło. wink
Chodziło Ci o coś takiego?

wn=document.body.getElementsByTagName("A");
for (i=0; i<wn.length; i++) {
obrazek=wn[i].getElementsByTagName("img");
};

Teraz masz i obiekt z linkiem i obrazek wewnątrz. Możesz sprawdzać źródło obrazka i zmieniać element, do którego odnosi się link.
(Z pamięci pisałem, ale powinno działać.)