Avatar billede mrbonus Novice
12. august 2008 - 09:23 Der er 17 kommentarer og
1 løsning

Alternativ til .click() på et link <a>

Internet Explorer har implementeret en .click() funktion på links, det er der dog umiddelbart ikke andre browsere der har, i hvert fald ikke Firefox og safari.

Jeg bruger den til at lave et postback fra en textbox igennem et link, da jeg har erstattet knapper med links. Så når jeg kører linkKnap.click() køres ASP.NETs javascript __doPostBack(); og der laves så postback.

Jeg kan ikke bare køre __doPostBack() fra textboxen, da det betragtes som et sikkerhedsbreach, at en kontrol prøver at lave postback for andre kontroller.

Så jeg er lidt på bar bund over hvad jeg så skal gøre, da det skal være en textbox, og et link der skal benyttes. Er der nogen der har nogen geniale input?
Avatar billede jokkejensen Novice
12. august 2008 - 09:27 #1
mener du

<a onclick="" />

eller

obj.onclick = function(){
//kode
}
Avatar billede mrbonus Novice
12. august 2008 - 09:53 #2
Hmmm, kan se at der ikke er noget i onclick, det ligger i href, så internet explorer har implementeret at hvis der ikke er noget i onclick, køres href, ihvertfald hvis der ligger java script: i href.

hmm, tricky, jeg vil lige kigge på at override noget af ASP.NETs funktionalitet så den kører onclick istedet for href.
Avatar billede w13 Novice
12. august 2008 - 09:59 #3
Hvis du indsætter "return false" sidst i din onclick, vil den afbryde href'ens funktionalitet.
Avatar billede jokkejensen Novice
12. august 2008 - 10:07 #4
ja eller bare <a href="java script:__doPostBack();">Post</a>
Avatar billede w13 Novice
12. august 2008 - 10:21 #5
Jeg forstår det sådan, at asp.NET genererer en href, som ikke kan ændres og derfor skal overrules af en onclick.
Avatar billede mrbonus Novice
12. august 2008 - 10:24 #6
dette virker i Internet explorer, men ikke i firefox

<html>
<head><title></title></head>
<body>
<input type="button" onclick="document.getElementById('mitLink').click();" value="Tryk på mig" />
<br />
<a id="mitLink" href="java script:alert('Det virker optimalt');">Skal autotrykkes på</a>
</body>
</html>
Avatar billede w13 Novice
12. august 2008 - 10:25 #7
.click() fungerer kun i Internet Explorer så vidt jeg husker. Så du kan ikke bruge den funktion.
Avatar billede mrbonus Novice
12. august 2008 - 10:28 #8
desværre virker det heller ikke at erstatte href med onclick i firefox

<html>
<head><title></title></head>
<body>
<input type="button" onclick="document.getElementById('mitLink').click();" value="Tryk på mig" />
<br />
<a id="mitLink" onclick="java script:alert('Det virker optimalt');">Skal autotrykkes på</a>
</body>
</html>

Hvad ville være et godt alternativ?
Avatar billede w13 Novice
12. august 2008 - 10:31 #9
Nej, det virker ikke, fordi funktionen click() ikke eksisterer i andet end IE.

Men du kan sagtens løse det. Her er funktionen med href:

<html>
<head><title></title></head>
<body>
<input type="button" onclick="window.location.href=document.getElementById('mitLink').getAttribute('href')" value="Tryk på mig" />
<br />
<a id="mitLink" href="java script:alert('Det virker optimalt')">Skal autotrykkes på</a>
</body>
</html>

Og her med onclick:

<html>
<head><title></title></head>
<body>
<input type="button" onclick="document.getElementById('mitLink').onclick()" value="Tryk på mig" />
<br />
<a id="mitLink" onclick="alert('Det virker optimalt')">Skal autotrykkes på</a>
</body>
</html>

Så er det op til dig, hvad du bedst kan li'. :)
Avatar billede w13 Novice
12. august 2008 - 10:31 #10
Bemærk at "onclick"-løsningen ligner din "click"-løsning meget, men den kan altså ikke udføre en href, kun en onclick.
Avatar billede w13 Novice
12. august 2008 - 10:32 #11
Jeg har i øvrigt testet metoderne i både IE6, IE7, FF, Safari og Opera.
Avatar billede mrbonus Novice
12. august 2008 - 10:35 #12
Det ser meget interessant ud w13, jeg sætter mig lige ned og laver noget test med det :)
Avatar billede jokkejensen Novice
12. august 2008 - 11:18 #13
Jeg fatter ikke helt hvorfor du har brug for det i asp.net..

Er det ikke bare en asp:linkbutton i stedet for en asp:button du efterspørger ?
Avatar billede mrbonus Novice
12. august 2008 - 14:30 #14
Jokkejensen, nej jeg benytter allerede asp:linkbutton, problemet er at det er links, og når man så skal sammenbygge det med javascript, så begynder det at blive lidt besværligt
Avatar billede mrbonus Novice
12. august 2008 - 14:32 #15
w13, jeg var først lidt bange for at den røg i sikkerhedsfælden, hvor andre ting ikke kan lave postback på andres vegne, men det virkede kraftedme, man fristes jo næsten til at sige at du er et geni :D
ps, jeg brugte den første version med:
onclick="window.location.href=document.getElementById('mitLink').getAttribute('href')"
Avatar billede w13 Novice
12. august 2008 - 14:33 #16
Hehe. :) Det lyder godt!
Avatar billede w13 Novice
12. august 2008 - 14:33 #17
Og tak for point! :)
Avatar billede jokkejensen Novice
13. august 2008 - 15:00 #18
okay, kender ikke scenariet, men det lyder forkert. Eller jeg har ikke haft behov for at skulle pille/behandle .nets eget genereret JS (ud over det JS lib der kommer med ajax.net), men så længe løsningen ikke skal skifte framework mm. Er det vel ligegodt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester