Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / HTML, JavaScript, VBScript, CSS Новый топик    Ответить
 [Deprecation] Synchronous - ошибка warnings  [new]
Khodiki
Member

Откуда: UFA
Сообщений: 120
Вроде все работает, но в консоле разработчика выдается предупреждение об ошибке:

VM55 jquery.js:9987 [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.

Похоже ошибка возникает из-за скрипта при вызове load

    <script type="text/javascript">
        function objload()
      {
        var p = window.location.search;
        var pp = p.match(new RegExp('ido' + '=([^&=]+)'));
        var ido=pp[1];
        pp = p.match(new RegExp('itl' + '=([^&=]+)'));
        var talefor=pp[1];
        pp = p.match(new RegExp('ifiltr' + '=([^&#]+)'));
        var ifiltr=decodeURIComponent(pp[1]);
        ifiltr=ifiltr.replace(/'/g,"");
        $("#objzzag").load("objzag.php", { 
              "talefor": talefor,
              "ido": ido,
              "ifiltr": ifiltr});
        $("#objallstr").load("objall.php",
            {
              "talefor": talefor,
              "ido": ido,
              "ifiltr": ifiltr
            });
      }
      window.onload = objload;
      </script>


Как избавится от данной ошибки?
23 сен 20, 06:15    [22202285]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18326
Khodiki,

нужно использовать асинхронный запрос
23 сен 20, 06:59    [22202289]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
voraa
Member

Откуда:
Сообщений: 166
Khodiki,
Если загружаемые фрагменты html содержат теги <script src=...>, то jquery будет загружать их сам, но синхронно.
Лучше загружать их отдельно, используя $.getScript

Сообщение было отредактировано: 23 сен 20, 07:53
23 сен 20, 07:49    [22202302]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18326
voraa
Khodiki,
Если загружаемые фрагменты html содержат теги <script src=...>, то jquery будет загружать их сам, но синхронно.
Лучше загружать их отдельно, используя $.getScript
ответ не правильный
Khodiki
[Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated
вот ошибка
jquery использует синхронный вариант запроса.
23 сен 20, 08:56    [22202323]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
voraa
Member

Откуда:
Сообщений: 166
вадя

Khodiki
[Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated
вот ошибка
jquery использует синхронный вариант запроса.

jquery использует синхронный вариант запроса при загрузке скриптов, которые появляются в html коде, который вставляется в элемент.
Например
        $("#objzzag").load("objzag.php", { 
              "talefor": talefor,
              "ido": ido,
              "ifiltr": ifiltr});

Загружается некоторый html код (c objzag.php). Эта загрузка происходит асинхронно.
Далее jquery разбирает этот код. Если там есть теги <script src=...> он загружает их отдельно. Но синхронно! Почему так - не знаю, но в библиотеки jquery это делается вот таким кодом

jQuery._evalUrl = function( url ) {
return jQuery.ajax( {
url: url,

// Make this explicit, since user can override this through ajaxSetup (#11264)
type: "GET",
dataType: "script",
cache: true,
async: false,
global: false,
"throws": true
} );
};


Сообщение было отредактировано: 23 сен 20, 09:54
23 сен 20, 09:56    [22202365]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18326
voraa
Если там есть теги <script src=...> он загружает их отдельно. Но синхронно!

значит надо указать
<script async src="script.js">  
23 сен 20, 10:57    [22202416]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
voraa
Member

Откуда:
Сообщений: 166
вадя,
jquery на это глубоко плевать.
Это не браузер грузит скрипт, а сам jquery.
Когда код html вставляется в элемент, el.innerHTML = str, если в этой str есть теги <script>, то они просто не обрабатываются браузером.
$().html(str) собственно так и делает, но сначала вынимает из него все<script>, потом вставляет то, что осталось в элемент.
А потом уже начинает обрабатывать вынутые скрипты.
Если есть <script src=...>, то jquery сам его загружает с помощью $.ajax. Но синхронно.
Иначе не получится.
После $().html(str) мы должны быть полностью уверены, что весь код вставился и был обработан заданными скриптами.
Иначе пришлось бы городить callback для $().html()
23 сен 20, 11:15    [22202434]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18326
voraa
Если есть <script src=...>, то jquery сам его загружает с помощью $.ajax. Но синхронно.
а он не анализирует наличие async в <script src=...> ?
23 сен 20, 11:18    [22202438]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
voraa
Member

Откуда:
Сообщений: 166
вадя,
Нет.
А как бы мы тогда узнали, что после $(el).html(str), скрипт загрузился и можно уже работать с этим элементом?
Никаких callback-ов не предусмотрено. Только синхронная загрузка.
23 сен 20, 12:49    [22202553]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18326
voraa
А как бы мы тогда узнали, что после $(el).html(str), скрипт загрузился и можно уже работать с этим элементом?
Никаких callback-ов не предусмотрено. Только синхронная загрузка.
отказаться от jquery
23 сен 20, 13:22    [22202601]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
ShSerge
Member

Откуда: ʚонɔ dиw
Сообщений: 24911
Ответ: забить. Это не к жКвери, а к яваскрипту. Я тоже такое часто делаю, если надо сначала одни данные получить аяксом, а потом - другие последовательно. Это предупреждение (а не ошибка) уже не первый год. А Вы что, собираетесь свою программу на десятилетия вперёд писать?
23 сен 20, 17:34    [22202862]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18326
ShSerge
Ответ: забить.
как вариант, но надолго ли?
23 сен 20, 19:17    [22202989]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
ShSerge
Member

Откуда: ʚонɔ dиw
Сообщений: 24911
вадя
ShSerge
Ответ: забить.
как вариант, но надолго ли?

См. пост выше. На нас с тобой хватит.
23 сен 20, 19:19    [22202990]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
Khodiki
Member

Откуда: UFA
Сообщений: 120
Всем спасибо. Нашла у меня в файле "objzag.php" есть цепочки <script src=
Убрала <script src= ошибка пропала :)
Но перестали работать кнопки. Счас попробую предложенные варианты.

ShSerge
Ответ: забить.

Спасибо. Новичок я, сомневалась - можно ли забить.
24 сен 20, 06:11    [22203160]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
Khodiki
Member

Откуда: UFA
Сообщений: 120
вадя
наличие async в <script src=...>

Попробовала поставить async - не помогло.
Тогда убрала scr= и просто прописала сам скрипт. И ошибка пропала и в все заработало.

А info и verbose - анализировать? Или можно забить?
24 сен 20, 06:41    [22203168]     Ответить | Цитировать Сообщить модератору
 Re: [Deprecation] Synchronous - ошибка warnings  [new]
voraa
Member

Откуда:
Сообщений: 166
Khodiki


ShSerge
Ответ: забить.

Спасибо. Новичок я, сомневалась - можно ли забить.

Забить можно.
Это не ошибка, а предупреждение.
Оно говорит о том, что скрипт будет загружаться синхронно и это может затормозить работу (на время загрузки скрипта)

Если скрипт очень большой, то его надо загружать отдельно с помощью $.getScript()
24 сен 20, 07:13    [22203176]     Ответить | Цитировать Сообщить модератору
Все форумы / HTML, JavaScript, VBScript, CSS Ответить