Door
Hans De Ridder
op 12-07-2018 16:35
gewijzigd op 12-07-2018 16:40
2.873 views
Ik gebruik een alternatief knopje met onclick.
Dat werkt weliswaar, maar IE11 weigert.
melding: "Verwacht een functie."
Vreemde is ook, dat het ineens wel werkt wanneer ik de F12 ontwikkelingsfunctie gebruik.
Iemand een idee?
IE 11 wordt ook zelden gebruikt: 1.9%
Als het alleen in deze browser speelt, zou ik me afvragen of het nog wel zinvol is om het op te willen lossen. In andere browsers werkt het wel?
Kijk eens naar de output, klopt die wel? Want je toont nu JS met PHP, en een browser heeft met het laatste niks te maken.
Bedankt voor je reactie..
De onclick ziet de javascript functie ook niet..
Alleen als ik de F12 ontwikkelingshulp inschakel om wat te checken, dan werkt het ineens.
Haal ik de ontwikkelingshulp weg, en reload ik de pagina, is het weer voorbij.
@Hans, wat je vergeet te vermelden is wat er wel/niet "werkt", het deel in de
.
.
.
.
lijkt mij relevant.
Hoe luidt de volledige relevante code, en waaruit blijkt dat het wel/niet "werkt".
Daarnaast, waarom geef je die parameters niet meteen apart door, je breit er nu een string van, en split deze vervolgens weer? :/
En dit:
var aa = result[6];
Heeft dat niet altijd de waarde 0? Dit is de zevende parameter (index 6), en die zit hard coded in je functie aanroep.
Mijn voorstel: schoon eerst je code eens wat op, en kijk dan of het probleem nog speelt.
Mogelijk speelt browser cache ook een rol, zorg dus dat je altijd de laatste versie van je code/pagina oproept, anders kijk je misschien tegen een (deels) verouderde situatie aan.
@Ivo
de spaties heb ik er even in geplaatst omdat IE een opmerking had over 'white spaces''.
Maar maakt niks uit. Uiteraard weer hersteld zonder spaties.
@Thomas
De onclick vindt de javascript functie niet in IE11.
result[6] is 0 of 1.
Het is een verwijzing naar bepaalde gedeelten in het script.
Bij 0 wordt de bijbehorende buttonafbeelding gewijzigd.
Bij 1 wordt wordt er geclickt op de bijbehorende button.
En de opdracht uitgevoerd.
Misschien herinner je nog wel de multi switch button die ik heb ontworpen. Met een 1 seconde vertraging.
Dit is ee alternatief, omdat niet elk tablet, etc. overweg kan met ingedrukt houden.
Er is een kleine button, die een andere button activeert, waar je dan direct je keuze mee kunt maken.
De andere blijft ook bestaan.
Test het bovenstaande eens in IE 11. Kijk anders eens wat de console tab (onder F12) te zeggen heeft over je document (in IE Edge), mogelijk zitten hier syntaxfouten in waardoor de JavaScript breekt.
Heb je ook al gecontroleerd wat @Ariën voorstelt, oftewel, heb je al naar de uiteindelijke broncode gekeken?
Jouw stukje werkt wel Thomas in IE11.
Dit is wat er rond dit onderwerp uit de gegevens komt. Dat is oke.
De aanvullende style gegevens van de DIV worden later verwerkt in de CSS.
De eerste code verwijst in IE11 niet door naar de javascript..
Er zijn met F12 wel paar waarschuwingen, geen fouten.
Maar die gaan niet over dit gedeelte.
Die meldingen zijn overigens hetzelfde in Edge als in IE11.
Uitsluitend bij IE11 ziet hij een SCRIPT5002 fout: Functie wordt verwacht. https://docs.microsoft.com/en-us/scripting/javascript/misc/function-expected.
Ik heb de PHP vervangen door een gewoon getal.
Ook dan blijft het weigeren.
Vreemde is ook, als ik het F12 ontwikkelingsprogramma gebruik, het wel ineens werkt.
Wanneer ik refresh, is de foutmelding er weer.
Ik heb het scriptgedeelte ook nog onder de DIV gezet.
Maar dat heeft geen effect.
Wat wel opvalt: 'heen en weer cache voor deze website is uitgeschakeld'.
Als ik naar de uitleg kijk, hoe deze fout ontstaat, dan herken ik daar niks aan.
Ik kan ook niet achterhalen, waarom het wel ineens werkt, wanneer ik met F12 de console oproep.
Kan het zijn dat 'cache' uitgeschakeld is in browser?
Misschien schakelt deze in ontwikkelingsmodus automatisch af, dat weet ik niet. Uigeschakelde cache kan voor ontwikkeling wel handig zijn omdat dat garandeert dat je altijd tegen de laatst geschreven versie van (de uitkomst van) je code tuurt.
Als de foutmelding soms optreedt is wellicht de functie nog niet beschikbaar op het moment dat deze aangeroepen wordt. In dat opzicht is het misschien een idee om pas een click-event te koppelen nadat het document in zijn geheel geladen is.
Daarnaast heeft IE 11 mogelijk zelf (specifieke) quirks. Het lijkt mij ook dat alles wat je in JavaScript schrijft ook "cross browser compatibel" is of zou moeten zijn. Nu zie ik niet direct hoe een onclick voor problemen zou kunnen zorgen, daarom is het misschien wel verstandig om precies uit te zoeken wat er misgaat, want als zoiets elementairs niet werkt, hoe kun je dan garanderen dat ingewikkeldere constructies het wel altijd doen?
Ook is het misschien handing om ook echt de suggesties op te volgen, zoals die van @Ivo die voorstelt om de spaties tussen de property onclick, het daaropvolgende =-teken, en de daaropvolgende waarde tussen dubbele quotes te verwijderen. Dit zie ik nog steeds terugkeren in het bovenstaande fragment. Waarom voeg je (nog steeds) spaties toe?
Tot slot loont het misschien de moeite om wat hulpstukken in te gaan zetten, zoals een library zoals jQuery. Met behulp hiervan kun je o.a. click-events aan elementen koppelen op een cross browser compatibele manier zodat je je geen (of in ieder geval minder) zorgen hoeft te maken over browser specifieke issues.
Maar allereerst zou ik toch proberen om die foutmelding weg te krijgen, en ook uit te zoeken wat deze nu precies veroorzaakt. Het is aan jou om ook alle ruis hier omheen (zoals caching) weg te nemen, we kunnen dit niet voor jou debuggen...