IE11 weigert onclick. Chrome, Firefox, Edge werken wel.
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?
Code (php)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Javascript functie
function media(verzam)
{
var result = verzam.split(",");
var aa = result[6];
var lid_hash = result[0];
.
.
.
.
}
function media(verzam)
{
var result = verzam.split(",");
var aa = result[6];
var lid_hash = result[0];
.
.
.
.
}
Gewijzigd op 12/07/2018 16:40:35 door Hans De Ridder
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.
Gewijzigd op 12/07/2018 17:08:17 door - Ariën -
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.
onclick = "media()"
vs
onclick="media()"
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:
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>onclick</title>
</head>
<body>
<button type="button" onclick="wat(0);">okay</button>
<script type="text/javascript">
//<![CDATA[
function wat(dinges) {
alert('hallo');
}
//]]>
</script>
</body>
</html>
<html>
<head>
<meta charset="UTF-8">
<title>onclick</title>
</head>
<body>
<button type="button" onclick="wat(0);">okay</button>
<script type="text/javascript">
//<![CDATA[
function wat(dinges) {
alert('hallo');
}
//]]>
</script>
</body>
</html>
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?
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'.
Code (php)
1
2
3
2
3
<div style="position: absolute; margin-top: 33px; margin-left: 4px; width: 30px; height: 30px;"><button type="button" style="position: relative; width: 28px; height: 13px; margin-top: 0px;" title ="ALTERNATIEF: Social Media. Maak keuze - Klik logo" onclick = "media('6ae937a59ea674d205e339cc804195e1ca326eb1,0,-1,0,-1,-1,0')"><b>^</b></button></div>
<div id = "X6ae937a59ea674d205e339cc804195e1ca326eb1" style="position: absolute; margin-top: -41px; margin-left: 1px; width: 28px; height: 28px; display: none;"><button type="button" id = "Y6ae937a59ea674d205e339cc804195e1ca326eb1" style="width: 28px; height: 28px; background: url('https://www.pctraverse.nl/Project/images/facebook1.png');" onclick = "media('6ae937a59ea674d205e339cc804195e1ca326eb1,https://www.facebook.com/hans.deridder.54,http://www.regenboogjes.nl,,,,1')"></button></div>
<div id = "X6ae937a59ea674d205e339cc804195e1ca326eb1" style="position: absolute; margin-top: -41px; margin-left: 1px; width: 28px; height: 28px; display: none;"><button type="button" id = "Y6ae937a59ea674d205e339cc804195e1ca326eb1" style="width: 28px; height: 28px; background: url('https://www.pctraverse.nl/Project/images/facebook1.png');" onclick = "media('6ae937a59ea674d205e339cc804195e1ca326eb1,https://www.facebook.com/hans.deridder.54,http://www.regenboogjes.nl,,,,1')"></button></div>
Gewijzigd op 13/07/2018 20:50:45 door Hans De Ridder
Quote:
Uitsluitend bij IE11 ziet hij een SCRIPT5002 fout: Functie wordt verwacht.
Lijkt mij zaak dat je die melding eerst wegwerkt dan.
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?
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...
Gewijzigd op 14/07/2018 14:01:37 door Thomas van den Heuvel
Zal na het weekend nog eens verder kijken.
Als er iets verandert, dan meld ik me weer.
ik gebruik een javascript functie media().
Blijkbaar wordt 'media' gezien als verboden woord.
Toen ik er na allerlei testen uiteindelijk 'mediaX' van maakte,
werkte alles weer in IE11.
Bedankt voor het meedenken!