Как использовать "let" (и поддерживаемые функции ECMAScript 6) как в Firefox, так и в Chrome - программирование

Как использовать "let" (и поддерживаемые функции ECMAScript 6) как в Firefox, так и в Chrome

ES6 script с использованием let работает, как ожидалось, в последней стабильности Chrome, если он находится в определении "use strict". И он отлично работает в Firefox, если он загружается с помощью тега script со специальным типом:

<script type="application/javascript;version=1.7" src=""></script>

Но файлы с этим специальным типом теперь не будут запускаться в Chrome! В Chrome не работает script: тихий сбой, никаких сообщений консоли. Что такое кросс-браузерное решение? (Я хочу знать, можно ли это сделать без перекоса.)

4b9b3361

Ответ 1

Наивное решение, предполагающее, что у вас есть контроль над самим script, заключается в том, чтобы установить некоторый глобальный внутри script и проверить, существует ли он позже. Iff это не так, замените этот элемент script на один без специального MIME-типа, чтобы он мог работать в других браузерах. После этого глобально можно будет игнорировать.

<script type="application/javascript;version=1.7">
  'use strict';
  window.fx = true;

  let foo = 'bar';
  console.log(foo);
</script>
<script>
  if (typeof window.fx === 'undefined') {
    var oldScript = document.querySelector('script[type="application/javascript;version=1.7"]');
    var text = oldScript.text;
    document.body.removeChild(oldScript);

    var newScript = document.createElement('script');
    newScript.text = text;
    document.body.appendChild(newScript);
  }
</script>