Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631

Узнать стандарт JS

27.05.2018, 01:19. Показов 1347. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, подскажите плиииз!

На одном старом браузере (Baidu) обнаружил что конструкция (e)=>{} не работает! только function(er){}

Насколько я понял браузер не поддерживает "новый стандарт".

Как В БРАУЗЕРЕ узнать поддерживаются ли подобные функции?

Нашел конструкцию
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
        <script type="text/javascript">var jsver = 1.0;</script>
        <script language="Javascript1.1">jsver = 1.1;</script>
        <script language="Javascript1.2">jsver = 1.2;</script>
        <script language="Javascript1.3">jsver = 1.3;</script>
        <script language="Javascript1.4">jsver = 1.4;</script>
        <script language="Javascript1.5">jsver = 1.5;</script>
        <script language="Javascript1.6">jsver = 1.6;</script>
        <script language="Javascript1.7">jsver = 1.7;</script>
        <script language="Javascript1.8">jsver = 1.8;</script>
        <script language="Javascript1.9">jsver = 1.9;</script>
        <script type="text/javascript">
          console.log(" js-version="+jsver+" (1.7=Baidu=Chromium) ");
        </script>
Но увы, отличий не обнаружил! на обеих пишет 1.7 и в "работющем" хроме и в неработающем Байду.

Не по теме:

Избавиться от Байду не предлагайте - я не знаю что будет у клиента! Может и еще старее, а нужна МАКСИМАЛЬНАЯ работоспособность.
js-модули подгружаю динамически, "осмотревшись" на стороне клиента из "статик" коллекций "на все случаи жизни".



Добавлено через 13 минут
Нагугли такое:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function check_ES6() {
    "use strict";
    if (typeof Symbol == "undefined") return false;
    try {
        eval("class Foo {}");
        eval("var bar = (x) => x+1");
    } catch (e) { return false; }
    return true;
}
if (check_ES6()) {
    // The engine supports ES6 features you want to use
    var s = document.createElement('script');
    s.src = "es6script.js";
    document.head.appendChild(s);
} else {
    // The engine doesn't support those ES6 features
    // Use the boring ES5 :(
}
Но может что-нибудь более разумное предложите?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.05.2018, 01:19
Ответы с готовыми решениями:

Как узнать стандарт который использует компилятор
Всем привет! Компилирую программу из терминала с помощью GNU. Как можно узнать какой стандарт использовался компилятором для компиляции...

Стандарт
Нашел в сети стандарт c++. Добавлено через 7 минут И ещё PDF о различиях стандартов. Не знаете, есть ли стандарт на русском? Где?...

Стандарт
Существует ли стандарт? Какие есть стандартные теги?

11
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
27.05.2018, 01:33
andyj, я вот просто из любопытства интересуюсь: ну вот нашел ты самый лучший способ проверить, что поддерживается в браузере, а что нет. И каковы дальнейшие действия? Если стрелочные функции поддерживаются - пишешь код с ними, а если нет, то в другой ветке - без них. Так что ли? Более старые конструкции работают везде, так может использовать именно их и не заморачиваться? Или все-таки в этом есть какой-то смысл?
0
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
27.05.2018, 01:50  [ТС]

Не по теме:

Цитата Сообщение от diadiavova Посмотреть сообщение
Или все-таки в этом есть какой-то смысл?
сам не знаю... стадия "сбора материала для проекта". Задача - максимальная скорость(урезать всё лишнее в js, сжать файлы), минимальная нагрузка на сеть (дорогой роуминг или слабый канал), максимальная поддержака разными браузерами.
Функционал не сложный - заполнение "форм" пользователями. Пробую и статик формы(аля РНР), и json/ajax общение, и сокеты... недавно обнаружил (абсолютно случайно запустив один из полудохлых браузеров) что компактная конструкция ()=> не работает, хотя часто упоминается. Заменил на function() = +6 символов на каждом упоминании (пока их десяток, но со временем может быть и тысяча)=> либо для старых браузеров сделать отдельный js("заменой") либо все писать "по старому"(пишу в ноде - уже привык "по новому").

p.s. если бы не Байду я бы и не знал что бывают браузеры "без поддержки" - теперь надо ВСЕ функции протестить в старых браузерах...



еще пару решений опробовал:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(function() {
  var v8string = 'function%20javaEnabled%28%29%20%7B%20%5Bnative%20code%5D%20%7D';
  var es6string = 'function%20javaEnabled%28%29%20%7B%0A%20%20%20%20%5Bnative%20code%5D%0A%7D';
 
  if (window.devicePixelRatio) //If WebKit browser
  {
    var s = escape(navigator.javaEnabled.toString());
    if (s === v8string) {
      //' V099787 detected
    } else if (s === es6string) {
      //' ES6 detected 
    } else {
      //' JSC detected
    }
  } else {
    display("Not a WebKit browser");
  }
 
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
 
})()
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function check_ES6_1() {
    "use strict";
    try { eval("var foo = (x)=>x+1"); }
    catch (e) { return false; }
    return true;
}
function check_ES6_2() {
    "use strict";
    if (typeof Symbol == "undefined") return false;
    try {
        eval("class Foo {}");
        eval("var bar = (x) => x+1");
    } catch (e) { return false; }
    return true;
}
function isES6(){
    try{
        Function("() => {};"); return true;
    }catch(exception){
        return false;
    }
}
...теперь все это надо "погонять" в браузерах...
0
27.05.2018, 02:16

Не по теме:

andyj, с этими проверками тебя могут ждать очень неприятные сюрпризы. Если браузер поддерживает некоторые фичи из того или иного стандарта, то это не значит, что он автоматически поддерживает весь стандарт целиком. Обычно в документации описывают поддержку браузерами для каждой фичи отдельно, а сводные таблицы поддержки стандартов браузерами как правило еще содержат информацию и о степени поддержки. Проверять все? Тогда какой смысл вообще в этом? Проверочного кода будет много и скорей всего он перекроет экономию по шесть символов на каждой функции. При этом все это потребует очень много работы. Ни на чем не настаиваю, но по-моему это бесперспективное занятие.

0
27.05.2018, 02:42  [ТС]

Не по теме:

Цитата Сообщение от diadiavova Посмотреть сообщение
Проверочного кода будет много
можно проверку сделать "ступенчатой"! Сначала проверить на "стандартные браузеры" - каталог небольшой составить. Причем на стороне сервера(в ноде) и брать из header запроса - отправлю либо файл "более детального чекера", либо сразу инструкцию на скачивание модулей. Думаю в "стандарты" попадет 90-95% браузеров (Chrom, Opera, Firefox, Safary, IE) и номера версии хватит чтобы "определиться".

0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
27.05.2018, 07:28
andyj, eval в коде Вас не пужает? Поддержка устаревших версий оно, конечно, дело добровольное, но я бы прислушался к совету diadiavova.
0
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
27.05.2018, 07:57  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
eval в коде Вас не пужает?
А что в этом опасного? я думал она безопасная!
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
27.05.2018, 09:48
andyj, в старых браузерах eval может запустить, например, json, на стороне сервера. "Eval is evil", кто-то когда-то сказал
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
27.05.2018, 09:52
Цитата Сообщение от andyj Посмотреть сообщение
Сначала проверить на "стандартные браузеры" - каталог небольшой составить. Причем на стороне сервера(в ноде) и брать из header запроса
Обычно это так и делается, тут скорее всего тебе следовало бы поискать готовые решения. Не знаю как это принято делать в ноде, но я загуглил node.js browser features detection и выдает ссылки на (предположительно полезные) npm-пакеты. Возможно есть смысл покопать именно в этом направлении?
0
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
27.05.2018, 15:30  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
в старых браузерах eval может запустить, например, json, на стороне сервера. "Eval is evil", кто-то когда-то сказал
Это как??? После ваших слов прогуглил много! Опасно в питоне и в ноде, если источник "внешний", но как это может быть опасным на стороне браузера? Любой плагин к хрому может вставить любой код внутрь моей страницы. Но чем опасен eval на моей странице с моими данными?
p.s. я большую часть логики на нем планирую построить и испугался что он не всеми браузерами поддерживается...
p.p.s. насколько я понимаю архитектуру инета, браузер НИКАК не может "перекинуть" исполняемый код на сервер без ведома программиста сервера! (кроме "0-day" ошибок в операционках)
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
27.05.2018, 16:50
andyj, например здесь:
или тут:
https://24ways.org/2005/dont-be-eval
0
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
27.05.2018, 17:40  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
например здесь
и-и-и? вся его "опасность" заключается в том что кто-то ДРУГОЙ умудрится испортить/подменить строку отправляемую в evel моего сайта и получит полный контроль за его "внутренностями". Например установит перехватчик паролей на мои input. Когда то-же может сделать ЛЮБОЙ ("доверенный", выкупленный хакерами и обновленный/подменнный) плагин Хрома, Оперы или Фаерфокса.
ИМХО, преимуществ куда больше при правильном/аккуратном использовании!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.05.2018, 17:40
Помогаю со студенческими работами здесь

Не стандарт
что применяется на сайте вк, провожу пример: http://vk.com/feed адрес как адрес но почему не http://vk.com/feed.php ??? как такое можно...

Стандарт c++
В стандартах c++ вообще прописано, что bool A должен быть заполнен false'ами? Просто у меня как-то сдавал задачку в тестирующую систему, не...

Стандарт HTML
Для поддержки единого стандарта веб-страниц (HTML) была создана организация W3C в каком-то года. Она приняла более 100 решений относительно...

Стандарт RUSMARC
Доброго времени суток. Пишу программу &quot;Абонемент&quot;. Знаю, что существует такой международный стандарт RUSMARC, который реализован в...

Стандарт ANSI
если использовать #include &lt;queue&gt; #include &lt;vector&gt; это уже не стандарт ANSI??


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru