Synchroniczne XMLHttpRequest w głównym wątku jest przestarzałe ze względu na jego szkodliwy wpływ na środowisko użytkownika końcowego.

Próbowaliśmy dołączyć plik jquery osi czasu, jak poniżej, z HTML (dynamiczne wstrzykiwanie danych), ale otrzymuję ten „Problem synchroniczny”. Czy istnieje sposób, aby dołączyć bibliotekę osi czasu w HTML!

     var contentli = '<script async="async" src="/assets/js/timeline/horizontal_timeline.min.js" ><\/script><script>$("#example").horizontalTimeline({dateDisplay: "monthYear",useFontAwesomeIcons: true,});<\/script> <div class="cd-horizontal-timeline" id="example"><div class="events-content"><ol>';
  contentli += '</ol></div></div>';
  $("#timelineH").empty();
  $( contentli ).insertAfter( "#timelineH" ); 
0
Gurpreet Singh 19 grudzień 2019, 00:20
Pytanie tak naprawdę nie ma nic wspólnego z Firestore, więc usunąłem tag.
 – 
Doug Stevenson
19 grudzień 2019, 00:22
Nie widzę, gdzie robisz XMLHttpRequest
 – 
Charles
19 grudzień 2019, 00:44

1 odpowiedź

Gdy jQuery wstawia kod HTML zawierający tag <script>, który ładuje zewnętrzny skrypt, zamienia go w synchroniczne żądanie AJAX w celu odczytania pliku, a następnie wywołuje eval() w celu wykonania. To powoduje wyświetlenie ostrzeżenia o wycofaniu.

Możesz użyć $.getScript(), aby załadować skrypt asynchronicznie, a następnie wykonać wywołanie zwrotne po zakończeniu ładowania.

$.getScript("/assets/js/timeline/horizontal_timeline.min.js", function() {
    $("#timelineH").html('<div class="cd-horizontal-timeline" id="example"><div class="events-content"><ol></ol></div></div>');
    $("#example").horizontalTimeline({dateDisplay: "monthYear",useFontAwesomeIcons: true,});
});
0
Barmar 19 grudzień 2019, 00:28