Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

IE8 jQuery input(s) in function call error

Pagina: 1
Acties:

  • Ronnyrr
  • Registratie: Juni 2009
  • Laatst online: 16-02-2024
He Tweakers,

Ik probeer mijn website IE8 compatible te maken. Echter loop ik tegen een probleem aan, ik krijg de volgende error in IE8:
Afbeeldingslocatie: http://i.stack.imgur.com/XgkLK.png

Line 13 is "$input" in het volgende stukje code:
JavaScript:
1
2
3
4
5
6
7
$.getScript('/assets/js/inc/ajax-request.js', function() {
    new AjaxRequest(
        "/cms/ajax/validatelogin.php",
        $inputs,
        serializedData
    );
});


Inputs is dan weer gelijk aan:
JavaScript:
1
$(this).find("input[type='text'], input[type='password']");


Eerste dacht ik dat dit niet werkte omdat ik het input type password gebruik wat een html5 input is.
Als ik dit stukje heb verwijderd krijg ik dezelfde error.

AjaxRequest is een functie waarin ik een POST request doe naar de server d.m.v. Ajax.
In alle moderne browsers, en IE8+, werkt alles verder perfect.

Kon helaas hierover op google niets vinden wat een oplossing bood. Het enigste wat ik kon vinden was dat ik wellicht in een JS object de laatste parameter ook een komma zou hebben mee gegeven en dat IE hiermee onderuit gaat, voorbeeld:

JavaScript:
1
2
3
4
var myObj = {
    'first': 1,
    'second' : 2,
}


ipv

JavaScript:
1
2
3
4
var myObj = {
    'first': 1,
    'second' : 2
}


Heb alle objecten nog eens gedubbel checked maar dit bleek ook niet het geval. Ik maak gebruik van jQuery 1.9.

Bedankt alvast voor de hulp. :)

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 31-08 12:02

Afvalzak

Zet jij mij even buiten?

Het kan ook een komma zijn zij na een : } die eigenlijk niet nodig is.

Is die ; bijvoorbeeld wel nodig na de AjaxRequest?

Last.fm | Code Talks


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
IE8 is niet zo goed in het bepalen waar de fout nu zit. Het zou goed kunnen dat het compleet ergens anders gebeurd.

Kun je (met de debugger) ook zien dat het op die regel fout gaat?

Verder post je twee javascript voorbeeldjes, maar die zijn beide foutief....
dit is de enige juiste:
(waarbij je natuurlijk de quotes om de variabelen ook nog weg kan halen)
JavaScript:
1
2
3
4
var myObj = { 
    'first': 1, 
    'second': 2
};

maar ik denk dat zelfs IE is niet zo slecht dat ie daar fout op gaat...

@hierboven:
ja die ; is nodig.. (dwz, hij werkt prima zonder, maar ik neem aan dat de TS ook valide JS wil schrijven)

[ Voor 17% gewijzigd door BasieP op 12-11-2013 19:16 ]

This message was sent on 100% recyclable electrons.


  • NNF
  • Registratie: November 2003
  • Laatst online: 29-11-2024

NNF

IE8 geeft diezelfde foutmelding als je geen quotes gebruikt in je object keys, bijv.:

JavaScript:
1
var myObject = { first: 1, second: 2 };

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
NNF schreef op dinsdag 12 november 2013 @ 19:15:
IE8 geeft diezelfde foutmelding als je geen quotes gebruikt in je object keys, bijv.:

JavaScript:
1
var myObject = { first: 1, second: 2 };
Ik weet niet welke IE8 jij hebt, maar hier heb ik deze testcase:

HTML:
1
2
3
4
5
6
<html>
<head></head>
<body>
<script>var myObj = { first: 1, second: 2 };</script>
</body>
</html>


en die werkt 'like a charm'

This message was sent on 100% recyclable electrons.


  • Ronnyrr
  • Registratie: Juni 2009
  • Laatst online: 16-02-2024
BasieP schreef op dinsdag 12 november 2013 @ 19:14:
IE8 is niet zo goed in het bepalen waar de fout nu zit. Het zou goed kunnen dat het compleet ergens anders gebeurd.

Kun je (met de debugger) ook zien dat het op die regel fout gaat?

Verder post je twee javascript voorbeeldjes, maar die zijn beide foutief....
dit is de enige juiste:
(waarbij je natuurlijk de quotes om de variabelen ook nog weg kan halen)
JavaScript:
1
2
3
4
var myObj = { 
    'first': 1, 
    'second': 2
};

maar ik denk dat zelfs IE is niet zo slecht dat ie daar fout op gaat...

@hierboven:
ja die ; is nodig.. (dwz, hij werkt prima zonder, maar ik neem aan dat de TS ook valide JS wil schrijven)
Hmm, dat wist ik niet dat IE de fout heel ergens anders kan plaatsen.
Ik gebruik gewoon altijd de console van de browser om fouten op te sporen, hoe zou ik dit anders kunnen "debuggen"?

Je doelt bij de correctie op de spatie? Dat was een type fout van mij, slordig.
De punt komma achter een object of functie call krijg ik inderdaad een warning op in me editor als ik die vergeet.
NNF schreef op dinsdag 12 november 2013 @ 19:15:
IE8 geeft diezelfde foutmelding als je geen quotes gebruikt in je object keys, bijv.:

JavaScript:
1
var myObject = { first: 1, second: 2 };
Hier had ik ook nog nooit van gehoord en heb het nu wel geprobeerd, hielp helaas niks.

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 31-08 12:02

Afvalzak

Zet jij mij even buiten?

Debuggen kan via f12 > Script > Start Debugging.

Last.fm | Code Talks


  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 14:05
Kan je een testcase op jsFiddle zetten? http://jsfiddle.net/

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
jsfiddle werkt niet in IE8

This message was sent on 100% recyclable electrons.


  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 14:05
:o sorry

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Afvalzak schreef op dinsdag 12 november 2013 @ 13:22:
Is die ; bijvoorbeeld wel nodig na de AjaxRequest?
"Is heel die AjaxRequest wel nodig?" is een betere vraag.
jQuery heeft al een heel erg mooie $.ajax aan boord...
NNF schreef op dinsdag 12 november 2013 @ 19:15:
IE8 geeft diezelfde foutmelding als je geen quotes gebruikt in je object keys, bijv.:

JavaScript:
1
var myObject = { first: 1, second: 2 };
IE8 ondersteunt niet het gebruik van gereserveerde language keywords zoals 'class' als property names. Dat is iets heel anders.

[ Voor 47% gewijzigd door R4gnax op 12-11-2013 21:16 ]


  • NNF
  • Registratie: November 2003
  • Laatst online: 29-11-2024

NNF

R4gnax schreef op dinsdag 12 november 2013 @ 21:13:
IE8 ondersteunt niet het gebruik van gereserveerde language keywords zoals 'class' als property names. Dat is iets heel anders.
Nu je het zegt :) Dat is inderdaad wat ik bedoel. Ik ben hier ooit tegenaan gelopen, maar het toeval wil dat ik inderdaad het woordje 'class' als property name had gebruikt, en dat werkt dus niet als je geen quotes gebruikt. Nooit bij stilgestaan dat het alleen om gereserveerde keywords ging. Weer iets geleerd :P

  • 8088
  • Registratie: December 2000
  • Niet online

8088

NaN

BasieP schreef op dinsdag 12 november 2013 @ 20:21:
[...]

jsfiddle werkt niet in IE8
jsfiddle.net/[project]/show/ of fiddle.jshell.net/[project]/show/ toch wel?

Do you seek to engage in or have you ever engaged in terrorist activities, espionage, sabotage, or genocide?


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
8088 schreef op woensdag 13 november 2013 @ 01:44:
[...]

jsfiddle.net/[project]/show/ of fiddle.jshell.net/[project]/show/ toch wel?
die kende ik niet :) leuke url dan kan je er idd wel wat mee in IE8

This message was sent on 100% recyclable electrons.


  • Ronnyrr
  • Registratie: Juni 2009
  • Laatst online: 16-02-2024
Thanks voor jullie input allemaal, kende zelf die jsFiddle voor IE8 ook nog niet, handig.
De AjaxRequest is zeker wel nodig. Dat is een functie waar ik inderdaad $.ajax gebruik.

Heb het uiteindelijk gefixt, IE-wise was het een k*t fout.
Ik haalde data op uit een JSON object. Deze zag er als volgt uit:

JavaScript:
1
2
3
4
5
6
7
8
9
{
"forget": {
        "class": "forget-password",
        "width": 380,

        "title": "Wachtwoord vergeten?",
        "content": "Vul hieronder het e-mail adres in dat u heeft gebruikt om uw account aan te maken.",
    }
}


Deze hing ik vervolgens aan een item dat ik appende:
code:
1
2
3
4
5
6
.append( $("<form></form>").attr({
                        'action': "",
                        'method': "POST",
                        'class': data[get].class
                    })
                )


Guess wat de fout was.
Ik gebruikte de parameter 'class'. Zodra ik deze had veranderd naar classname o.i.d. wat ik zelf maar had gewilt ofc werkte alles als een zonnetje.

@BasieP,
Zoals jij dus ook zei zat de fout totaal ergens anders als aangegeven, hopeloos zoeken..
Pagina: 1