Запуск Javascript с помощью AJAX

Товарищи, помогите пожалуйста, голову сломал, не знаю почему - не хочет грузиться скрипт через AJAX,пробовал по всякому, по прямому подключению работает отлично Код script.js в файле по ссылке
script.js - код script.js просто большой, поэтому ссылка

<HTML>
   <head>
      <script type="text/javascript" src="jquery-1.6.2.js"></script>
      <script>  
         $(document).ready(function() { 
         $.getScript("script.js"); });          
      </script>  
   </head>
   <body>
      <style type="text/css">
         #word_options {
         display: none;}
      </style>
      <div>
         <h4>Введите слово</h4>
         <input type='text' id='word'>
         <select id="word_options"></select>
         <button id='translateButton'>Перевести</button>
      </div>
      <div id='result'></div>
   </BODY>
</HTML>

Скорее всего скрипт загружается. Но не выполняется обработчик внутри window.addEventListener('load', () => { потому что это событие уже произошло в прошлом. Если ситуация именно такая (можно проверить, добавив в начало загружаемого скрипта alert(111)), то решением будет использование jquery-евского DOMReady:

Это

window.addEventListener('load', () => {
    let word = document.getElementById('word');
    let translateButton = document.getElementById('translateButton');
    ...

заменить на это

$(() => {
    let word = document.getElementById('word');
    let translateButton = document.getElementById('translateButton');
    ...
1 лайк

А если удалить $(document).ready(function() { и оставить только $.getScript(“script.js”); ? Возможно такая ситуация:

  $(document).ready(function() { 
        // Этот код прогружается через секунду но событие уже произошло
        // ранее и весь код ниже не воспроизводится
        $(document).ready(function() { 
            //...
        });
    });

P.S.: Из Укр. Я.Диск нельзя открыть что бы увидеть содержимое файла.

script.js - гугл диск
window.onload = function() {$.getScript(“script.js”);} тоже делал не помогает

Ну да, window.addEventListener(‘load’, () => { колбек используется. И он не отрабатывает, так как событие лоада уже произошло, до момента когда этот скрипт подгрузился через $.getScript и начал выполняться.

Вроде @dmitry и я подсказали тебе выше, как это пофиксать.

1 лайк

Анатолий, @dmitry , спасибо большое за помощь, а тогда тут чем заменить
h.js -гугл диск
index.html

26 строка “h.js”

translateButton.addEventListener(“click”, () => translate(word.value));

30 строка “h.js”

input.addEventListener('keyup', (e) => {const word =e.currentTarget.value;
     ......

Почему думаешь что тут нужно что-то заменять?

Думаю тут причина таже что и в том примере, наверное, ибо проблема таже - не выполняется скрипт, а при прямом подключении выполняется и обработчик тотже

в h.js код

window.onload = function (){
//...
};

Проблема скорее всего та же: событие onload уже произошло когда выполняется скрипт. Лечение такое же как и в моем первом ответе.

Диагностировать проблему можно было бы, добавив alert в начало скрипта и alert внутри window.onload = function (){. Скорее всего второй алерт не выполняется, следовательно дело в том что обработчик события не выполняется.

да, 111 alert выполняется, 222 не выполняется
alert(111);
window.onload = function (){
alert(222);
//…
};
Замена window.onload = на
$document.ready(function (){

//…
};);
и Просто убирая “window.onload =” не выполняется вообще ничего
и обёртывание в DOM ready 30 строку не дает эффекта

Нужно обернуть в $() ту функцию что ты записывал в window.onload.

1 лайк

спасибо, большое, ещё раз, я просто туп как пробка в программировании

Мы все были такими. На этом ресурсе ты не потеряешь время если будет пробовать понять ответы и задавать вопросы.