IE11 weigert onclick. Chrome, Firefox, Edge werken wel.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hans De Ridder

Hans De Ridder

12/07/2018 16:35:48
Quote Anchor link
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?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<button type="button" style="width: 28px; height: 13px; margin-top: -3px;"  title ="ALTERNATIEF: Social Media. Maak keuze - Klik logo"  onclick = "media('<?php echo $lid_hash; ?>,<?php echo $y1; ?>,<?php echo $y2; ?>,<?php echo $y3; ?>,<?php echo $y4; ?>,<?php echo $y5; ?>,0')"><b>^</b></button>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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];
.
.
.
.
}
Gewijzigd op 12/07/2018 16:40:35 door Hans De Ridder
 
PHP hulp

PHP hulp

17/10/2018 12:53:09
 
- Ariën -
Beheerder

- Ariën -

12/07/2018 17:07:45
Quote Anchor link
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.
Gewijzigd op 12/07/2018 17:08:17 door - Ariën -
 
Hans De Ridder

Hans De Ridder

12/07/2018 17:27:47
Quote Anchor link
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.
 
Ivo P

Ivo P

13/07/2018 14:20:35
Quote Anchor link
en als je de overtollige spaties rond de = achterwege laat?

onclick = "media()"

vs

onclick="media()"
 
Thomas van den Heuvel

Thomas van den Heuvel

13/07/2018 14:56:05
Quote Anchor link
@Hans, wat je vergeet te vermelden is wat er wel/niet "werkt", het deel in de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
.
.
.
.

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.
 
Hans De Ridder

Hans De Ridder

13/07/2018 16:56:02
Quote Anchor link
Dank jullie wel voor de reacties.

@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.
 
Thomas van den Heuvel

Thomas van den Heuvel

13/07/2018 19:32:50
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>

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?
 
Hans De Ridder

Hans De Ridder

13/07/2018 20:47:08
Quote Anchor link
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'.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>
Gewijzigd op 13/07/2018 20:50:45 door Hans De Ridder
 
Thomas van den Heuvel

Thomas van den Heuvel

14/07/2018 00:58:37
Quote Anchor link
Quote:
Uitsluitend bij IE11 ziet hij een SCRIPT5002 fout: Functie wordt verwacht.

Lijkt mij zaak dat je die melding eerst wegwerkt dan.
 
Hans De Ridder

Hans De Ridder

14/07/2018 10:46:17
Quote Anchor link
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?
 
Thomas van den Heuvel

Thomas van den Heuvel

14/07/2018 13:59:50
Quote Anchor link
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...
Gewijzigd op 14/07/2018 14:01:37 door Thomas van den Heuvel
 
Hans De Ridder

Hans De Ridder

14/07/2018 15:03:21
Quote Anchor link
Bedankt voor je uitgebreide reactie Thomas.
Zal na het weekend nog eens verder kijken.
Als er iets verandert, dan meld ik me weer.
 
Hans De Ridder

Hans De Ridder

15/07/2018 15:18:51
Quote Anchor link
De fout is gevonden!!

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!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.