Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak zdezaktywować href w linku, Sposób na stworzenie pseudo-odnośników
Pilsener
post
Post #1





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


1. Witajcie, mam odnośnik:
  1. <a href="http://forum.php.pl">link</a>

Czy da się zrobić tak, żeby po kliknięciu w element przeglądarka nie wysyłała żądania? Czyli po prostu zwykły link, tyle żeby nie działał.

2. Mam np. taki odnośnik:
  1. <a>link</a>

Czy da się zrobić tak, żeby po najechaniu na taki link w pasku stanu pojawił np. odnośnik http://forum.php.pl?

Jak macie jakieś pomysły jak prosto osiągnąć takie efekty to byłbym wdzięczny winksmiley.jpg

Ten post edytował Pilsener 15.08.2009, 13:24:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
slightyboy
post
Post #2





Grupa: Zarejestrowani
Postów: 52
Pomógł: 12
Dołączył: 12.07.2007

Ostrzeżenie: (0%)
-----


Znacznik <a> musi posiadać zdeklarowane "href" (odnośnik). Efekt, o którym mówisz, można osiągnąć przy użyciu JavaScript.

Kod
<a href="" onClick="return false;">asd</a>
Go to the top of the page
+Quote Post
Pilsener
post
Post #3





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat
Znacznik <a> musi posiadać zdeklarowane "href"
- wg mnie href jest dla <a> opcjonalny, ale nie sądzę, by to miało jakieś znaczenie.

Wolałbym uniknąć JS, ale tutaj chyba się nie da, dzięki za sposób z onclick.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat
- wg mnie href jest dla <a> opcjonalny
To jakie znaczenie miałby mieć element A bez HREF? Pomijam fakt, że specyfikacja jasno określa, że dla tego elementu ten atrybut jest wymagany.

Jeżeli chcesz by link nigdzie nie prowadził - to nie dawaj tam linka. Jeżeli chodzi Ci o uzyskanie jakiegoś efektu wizualnego - da się to zrobić przy pomocy CSS na dowolnym elemencie.
Go to the top of the page
+Quote Post
viking
post
Post #5





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Kod
<!ATTLIST a
href        %URI;          #IMPLIED
>


Nie jest wymagany. Możesz zrobić href="#".


--------------------
Go to the top of the page
+Quote Post
sowiq
post
Post #6





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(Pilsener @ 15.08.2009, 14:23:57 ) *
Czy da się zrobić tak, żeby po najechaniu na taki link w pasku stanu pojawił np. odnośnik http://forum.php.pl?
Jeśli chcesz oszukiwać userów, tzn. robić fake-linki, które kierują w zupełnie inne miejsce niż na to wskazuje napis w pasku stanu, to się zastanów dwa razy. Może zrobisz usera w balona raz, a może pięć, ale on już więcej na Twoją stronę nie wróci po takich akcjach.

A odpowiadając na pytanie - w pasku stanu pojawia się link umieszczony w parametrze href. Żeby deaktywować linki albo kierować na inną stronę po kliknięciu możesz użyć JS, ale to na nic jeśli user kliknie sobie na linka prawym przyciskiem myszy i wybierze otwórz w nowej karcie. Wtedy zawsze brana jest wartość href i nie jest wykonywane zdarzenie onclick.
Go to the top of the page
+Quote Post
Pilsener
post
Post #7





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat
To jakie znaczenie miałby mieć element A bez HREF?
- takie, jak każdy inny element liniowy, który można ostylować.

Cytat
Jeśli chcesz oszukiwać userów
- nic z tych rzeczy, zresztą i tak nigdy nie wiesz, gdzie zostaniesz przekierowany winksmiley.jpg
Cytat
ale to na nic jeśli user kliknie sobie na linka prawym przyciskiem myszy i wybierze otwórz w nowej karcie. Wtedy zawsze brana jest wartość href i nie jest wykonywane zdarzenie onclick
- tego się właśnie obawiałem.

A pytam o to wszystko dlatego, że na stronach używa się zarówno <a> jak i <input type="submit" />, jednak oba rozwiązania mają swoje wady:
- gdy mam <a> i klikam np. ?go=dodaj_do_koszyka&id=3 to potem muszę usunąć te zmienne z adresu, a jak wiadomo przekierowania nie są zalecane ze względu na wydajność
- gdy używam input, to największą wadą jest trudność w ostylowaniu tego tak, aby wyglądał jak link (a href to tylko efekt wieńczący dzieło, najważniejsza jest łatwość użycia pseudoklasy hover)

Dlatego wpadłem na pomysł ujednolicenia wszystkich przycisków tak, aby wyglądały jak linki lecz aby user nie widział, który wysyła POST, a który GET, w kodzie wygląda to mniej więcej tak:
  1. <a class="przycisk" href="http://forum.php.pl"></a>
- link jako link, tylko GET
  1. <a class="przycisk" href="http://forum.php.pl"><input type="submit" name="akcja" value="" /></a>
- link jako submit, tylko POST

Całość można tak ostylować, że bez zaglądania w kod nie ma różnicy - jednak ten drugi link ma pewien feler - działa "poprawnie" tylko w IE 6.0, w każdej normalnej przeglądarce jest wysyłany zarówno POST, jak i GET (zdaje się, że najpierw leci POST), stąd moje pytanie winksmiley.jpg

Może jeszcze do czegoś innego tego potrzebuję, ale przynajmniej nie powiecie, że pytam bezcelowo winksmiley.jpg
Go to the top of the page
+Quote Post
jmail
post
Post #8





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


masz przykłąd zrobienia przycisku który wygląda jak link

  1.  
  2. <input type="button" class="przycisk" value="wyslij" onmouseover="this.className = 'przycisk przycisk_hover'" onmouseout="this.className = 'przycisk'">
  3.  


i css

  1.  
  2. .przycisk{
  3. border: 0px;
  4. background: none;
  5. cursor: pointer;
  6. }
  7.  
  8. .przycisk_hover{
  9. text-decoration: underline
  10. }
Go to the top of the page
+Quote Post
Crozin
post
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat
- takie, jak każdy inny element liniowy, który można ostylować.
Nie. A definiuje hiperłącze i tyle. Chcesz mieć element liniowy bez żadnego semantycznego znaczenia? Użyj SPAN.

Dla każdego elementu możesz bez problemów używać pseudoklasy :hover. IE6? Olać - zalecane, skorzystać z whatever:hover czy czegoś w tym stylu.

Sam cel też wydaje mi się nieco bez sensu.
W czym tak bardzo przeszkadzają Ci te zmienne w adresie? Czy te przekierowania to główny powód przeciążenia serwera?

A jeżeli już tak bardzo Ci zależy na tym, to proponowałbym tu skorzystać z JS. Zdarzenie click dla A, które w locie tworzy formularz o action równym (tu fragment URLa) z kilkoma inputami oraz go wysyła.
Osób bez JS lub świadomie go wyłączających jest bardzo mało - one nie umrą z powodu kilku zmiennych w adresie, a serwer nie będzie tym przeciążony.
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Czy da się zrobić tak, żeby po kliknięciu w element przeglądarka nie wysyłała żądania? Czyli po prostu zwykły link, tyle żeby nie działał.

Kombinujecie...

Google: preventDefault.

Cytat
A pytam o to wszystko dlatego, że na stronach używa się zarówno <a> jak i <input type="submit" />, jednak oba rozwiązania mają swoje wady:
- gdy mam <a> i klikam np. ?go=dodaj_do_koszyka&id=3 to potem muszę usunąć te zmienne z adresu, a jak wiadomo przekierowania nie są zalecane ze względu na wydajność

A po co usuwać...? O.o

Cytat
- gdy używam input, to największą wadą jest trudność w ostylowaniu tego tak, aby wyglądał jak link (a href to tylko efekt wieńczący dzieło, najważniejsza jest łatwość użycia pseudoklasy hover)

A nie możesz jej użyć dla input? Robisz na siłę problem...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Pilsener
post
Post #11





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Sami widzicie, że jak napisałem cel, jaki mi przyświeca to każdy kwestionuje tą celowość winksmiley.jpg

1. Zmienne aż tak bardzo nie przeszkadzają, ale to nieestetyczne i pojawia się problem, kiedy klient odświeża stronę - trzeba zaraz odróżnić, kiedy odświeża a kiedy klika w link, jest cała masa sytuacji, w których link typu usun&id=123 nie ma po wykonaniu akcji racji bytu.

2. A co do hover dla input'a to jak wiadomo IE 6.0 tutaj nam bruździ - na szczęście niedługo (przynajmniej taką mam nadzieję) będzie można olać tego browsera z epoki kamiennej i skończy się ten problem.

Cytat
Kombinujecie...
- no chyba to nie przestęstwo? Kto kombinuje ten żyje winksmiley.jpg Jeśli można niskim nakładem pracy uzyskać bardziej idealny efekt na stronie to czemu nie skorzystać?

Dzięki wszystkim za pomoc, pokombinuje z tym JS w wolnej chwili.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Cytat
1. Zmienne aż tak bardzo nie przeszkadzają, ale to nieestetyczne i pojawia się problem, kiedy klient odświeża stronę - trzeba zaraz odróżnić, kiedy odświeża a kiedy klika w link, jest cała masa sytuacji, w których link typu usun&id=123 nie ma po wykonaniu akcji racji bytu.

A redirect po POSTcie?
Cytat
- gdy mam <a> i klikam np. ?go=dodaj_do_koszyka&id=3 to potem muszę usunąć te zmienne z adresu, a jak wiadomo przekierowania nie są zalecane ze względu na wydajność

I wlasnie temu wszyscy tego uzywaja, bo rozwiazuje problem bardzo szybko i w prosciutki sposob?


Co do rozwiazania: ja kiedys onclick dodawalem JSem ukryty formularz, z action == a.href i go wysylalem .submit() + preventDefault na linku, działa.
Wada to to ze widzisz link, chcesz go kliknac zeby sie otworzyl w tle, a sie nie da.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 20:20