0

Почему эта кнопка не работает на ios? Он отлично работает на настольных компьютерах и Android. Он работает на ios, если clickHandler определяется как регулярная функция.ios addEventListener не работает

http://codepen.io/CalebEverett/pen/RRmYgx

<html> 
    <head> 
     <style> 
      button { 
       width: 150px; 
       height 50px; 
      } 
     </style> 
    </head> 
    <body> 
     <div id="testdiv">it doesn't work</div> 
     <button id="do">Button</button> 
    </body> 
    <script> 
     const clickHandler =() => { 
      document.getElementById("testdiv").innerHTML = "it works!" 
     } 
     document.getElementById("do").addEventListener("click", clickHandler, false); 
    </script> 
<html> 
+0

Вы переписываете это, или это фактический код, который вы отправляете в браузер? Многие браузеры для настольных компьютеров и Android также не будут поддерживать это. – jcaron

+1

У вас, вероятно, есть приятное сообщение об ошибке в консоли, которое скажет вам, что оно не понимает ни слова, BTW. – jcaron

+0

В соответствии с https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Browser_compatibility функции со стрелками пока еще недостаточно широко поддерживаются. – jcaron

ответ

1

Вы используете arrow function, который является функцией ES6.

Поддержка ES6 в целом и функций стрелок, в частности, еще не широко распространена и ограничена только недавними версиями некоторых браузеров. В частности, Safari не поддерживает функции стрелок на рабочем столе (Mac) или мобильном устройстве (iOS), но многие другие браузеры будут иметь такую ​​же проблему (включая старые браузеры Android, IE и т. Д.).

Вам нужно либо перевести код ES6 на то, что поддерживается более широко, либо придерживаться более стандартного Javascript.

+0

Спасибо за ответ. https://kangax.github.io/compat-table/es6/ и https://babeljs.io/ также были полезными ресурсами. –