Avatar billede kongknabe Nybegynder
10. november 2009 - 13:20 Der er 11 kommentarer

jQuery og IE8?

Hejsa.

Sidder og arbejder med et lille jQuery script som gerne skulle forhindre default funktionaliteten ved at trykke på et link, og i stedet gøre noget andet. Men af en eller anden grund virker det ikke i IE 8.

Min kode ser ud som følger:

$.listen("click", ".update_overlay", function(){
       
    $("#wrap").load('ajax.php'+$(this).attr("href")+'');       
        window.location.href ='#'+$(this).attr("href")+'';
    return false;
});

- Det virker fint i rigtige browsere!?

Et eksempel på problemet kan ses her, hvis man prøver at trykke på linket "Køb denne vare" - i henholdsvis IE 8 og Firefox:

http://www.toyrex.dk/beta/v.0.2/?page_id=frontpage#?page_id=view_ad&template_id=_system&ad_id=5492
Avatar billede kongknabe Nybegynder
10. november 2009 - 13:28 #1
Hmm.. Har nu testet lidt mere og ser at det kun er hvis man kører IE8 i compatibility mode, eller IE/ mode...!? Men er selvfølgelig stadig lidt nervøs for hvad folk med forskellige versioner af IE kommer til at opleve.
Avatar billede kongknabe Nybegynder
10. november 2009 - 14:26 #2
Nyt problem.. Har fået ovenstående til at virke men kan ikke få det til at du med at submitte forms via javascript. Er vi ikke enige om at følgende kode gerne skulle forhindre en POSt i at blive sendt på nromalt vis til serveren?

$.listen("submit", ".ajax_form", function(){
       
        return false;
});

IE8 er tilsyneladende ligeglad og submiter den alligevel!?
Avatar billede intenz Novice
10. november 2009 - 23:29 #3
Cool side du er ved at udvikle :)

Det er lidt svært at komme med et konkret svar ud fra en "det virker ikke" besked. Har du prøvet at debugge den? Sæt en onsubmit="return false" på formen, så kan du se om der kommer en javascript fejl.
Avatar billede kongknabe Nybegynder
11. november 2009 - 01:24 #4
@intenz

Du har helt ret, og det var egentlig også min plan at lave en simpel demo side der viser problemet for lettere at kunne vise problemet, frem for at skule forklare alt muligt, men nåede det ikke lige i dag.

Som sådan har jeg jo allerede sat "return false" på min onsubmit i kodeeksemplet ovenfor, og vil meget nødig til at skulle i gang med at skrive javascript inline i min HTML.

Men vil lige prøve at isolere fejlen i et simpelt script, og hvis jeg ikke selv kan løse det smdier jeg det lige op her i morgen.. :)

Tak for de pæne ord i øvrigt :)
Avatar billede kongknabe Nybegynder
11. november 2009 - 01:29 #5
Nu prøvede jeg bare lige for sjov at tilføje onsubmit="return false" direkte i HTML koden på submit knappen, og IE 8 poster den stadig...!?
Avatar billede kongknabe Nybegynder
11. november 2009 - 01:37 #6
Ok - den skulle sættes i form tagget (som du skrev) og ikke på submitknappen :)
Avatar billede kongknabe Nybegynder
11. november 2009 - 01:39 #7
Problemet lader til at være at den slet ikke ryger ind i den funktion jeg har skrevet ovenfor...
Avatar billede intenz Novice
11. november 2009 - 11:03 #8
Ja, så er det svært :)

Du kan prøve at lave en workaround:
$('.ajax_form').attr('form').onsubmit(din_function);
Avatar billede kongknabe Nybegynder
11. november 2009 - 17:00 #9
Problemet er at formen bliver loadet med ajax, og derfor bliver jeg nød til at bruge pluginnet "listen" for at kunne binde en event på.
Avatar billede intenz Novice
11. november 2009 - 17:25 #10
Hvis du kører den kode jeg skrev efter du loader formen med ajax, burde det vel ikke være noget problem. Bare formen er indsat i DOM inden koden bliver kørt.
Avatar billede kongknabe Nybegynder
11. november 2009 - 17:32 #11
Det har du selvfølgelig ret i, og det kunne jeg jo i princippet også.. Bare ikke sådan jeg gør tingene nu og det vil kræve lidt omstrukturrering i hele min kode.. men måske jeg bliver nød til at gøre det sådan.

Vil lige prøve at lave et simpelt eksempel nu så jeg kan se hvad der sker med de forskellige metoder :)
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