Как оптимизировать и прилепить скрипт к кнопке?

Тема в разделе "JavaScript", создана пользователем ZmeYEditioN, 12 окт 2019.

Метки:
  1. ZmeYEditioN

    ZmeYEditioN Писатель

    Регистр.:
    18 сен 2019
    Сообщения:
    5
    Симпатии:
    0
    Доброго времени суток.
    Есть вот такой скрипт
    Код:
    var cupIDs = [93,105,117,129,141];
    var c = 0;
    function cupquest() {
    if (c<cupIDs.length) {
      document.getElementById("cupFrame").src='https://fotostrana.ru/sports/ajax/minigameAward/?&gameId='+cupIDs[c]+'&getfree=1';
      document.getElementById("content").innerHTML="<h1>"+(c+1)+"</h1>";
      c++;
    } else {
      c=0;
      document.getElementById("content").innerHTML="<h1>Бонусы кубков собраны</h1>";
    }
    }
    Мне нужно прикрутить его к запуску по клику. На данный момент добавлен вот так
    HTML:
    <div id="container">
        <div id="content"></div>
        <iframe onclick="javascript:cupquest();" id="cupFrame" style="display:table;">
    </iframe></div>
    Вылазит контейнер, и оповещение, только при входе на сайт. Так-же добавлен запуск в виде кнопки
    HTML:
    <div class="sButton surfMinigamePlay" onclick="cupquest()"><strong>Задания кубка</strong></div>
    В итоге - при входе на сайт, он запускается автоматически. А так-же запускается при нажатии на кнопку, как положено. Если я ставлю onclick - то надо 5 раз тыкать (5 заданий), он уже полностью не грузится.

    Необходимо убрать автозапуск при загрузке страницы, и оставить запуск именно по нажатию кнопки. Уже давно с ним борюсь, всё никак не получается. Может подскажет кто? Как или скрипт оптимизировать, или то - что есть перекрутить)

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

    Не так немного код написал.
    В iframe и в дивку, он вставлен через onload.
    А нужно сделать onclick - но чтобы сам скрипт полностью прогружался, а не по 1 ссылке)

    По аналогии сделал авто-прохождение других заданий, например вот
    Код:
    var gameIDs = [0,2,4,5,6,7,37,38,42,43,44,59,108];
    var d = 0;
    
    function dailyquest() {
    if (d<gameIDs.length) {
      document.getElementById("dailyFrame").src='https://fotostrana.ru/sports/ajax/minigameAward/?_ajax=1&gameId='+gameIDs[d]+'&ajax=1';
      document.getElementById("content").innerHTML="<h1>"+(d+1)+"</h1>";
      d++;
    } else {
      d=0;
      document.getElementById("content").innerHTML="<h1>Мини-игры пройдены</h1>";
    }
    }
    Такая проблема остается, при нажатии на кнопку - всё проходит. Добавлено через фрейм на страницу, но по мимо кнопки еще и грузится просто при входе на сайт.
    Добавлен вот так:
    Код:
    <div id="container">
        <div id="content"></div>
        <iframe onload="javascript:cupquest();" id="cupFrame" style="display:none;"></iframe>
        <iframe onload="javascript:dailyquest();" id="dailyFrame" style="display:none;"></iframe>
        <!--<iframe onload="javascript:bazequest();" id="bazeFrame" style="display:none;"></iframe>-->
    
    </div>
                  
                    <center>
                      <div class="sButton surfMinigamePlay" onclick="dailyquest()"><strong>Ежедневки</strong></div>
                      <div class="sButton surfMinigamePlay" onclick="bazequest()"><strong>База школы</strong></div>
                      <div class="sButton surfMinigamePlay" onclick="cupquest()"><strong>Задания кубка</strong></div>
                 </center>
    На сайте выглядит вот так:
    Screenshot_3.png

    Вот таким образом скрипты прикрученны к сайту:
    Код:
          <script src="js/script.js"></script>
          <script src="js/cupquest.js"></script>
          <script src="js/dailyquest.js"></script>
          <script src="js/bazequest.js"></script>
    И когда запускаешь сайт, из фрейма естесвенно сразу все скрипты загружаются(((
    Подскажите как сделать так, чтобы скрипт грузился только при нажатии на кнопку?
     
    Последнее редактирование модератором: 27 окт 2019
  2. aboyarshinov

    aboyarshinov Создатель

    Регистр.:
    24 окт 2019
    Сообщения:
    10
    Симпатии:
    0
    А зачем во фрейме onload , если нужно что бы скрипт только при нажатии на кнопку отрабатывал?

    Если фрейм в какие то моменты отображается и нужно что бы при этом срабатывали скрипты - можно в них добавить проверку на видимость элемента фрейма. То есть если фрейм видим - выполняем скрипт. нет - выходим
     
    Последнее редактирование модератором: 27 окт 2019
  3. ZmeYEditioN

    ZmeYEditioN Писатель

    Регистр.:
    18 сен 2019
    Сообщения:
    5
    Симпатии:
    0
    Если во фрейм не ставить, то он вообще не работает(
     
  4. aboyarshinov

    aboyarshinov Создатель

    Регистр.:
    24 окт 2019
    Сообщения:
    10
    Симпатии:
    0
    не работает клик на кнопку, если убрать из фрейма ?
     
  5. ZmeYEditioN

    ZmeYEditioN Писатель

    Регистр.:
    18 сен 2019
    Сообщения:
    5
    Симпатии:
    0
    Именно, почему-то вообще ничего не происходит

    Про что я и говорю. Вообще дичь какая-то. Что только не гуглил, что только не пробовал, не получается сделать и все
     
    Последнее редактирование модератором: 27 окт 2019
  6. aboyarshinov

    aboyarshinov Создатель

    Регистр.:
    24 окт 2019
    Сообщения:
    10
    Симпатии:
    0
    А вживую можно где то посмотреть?
    А то мне на практике как то ...удобнее

    Ну и желательно понимать ожидаемое поведение:
    То есть загружается страница,есть скрытые элементы
    при нажатии на кнопку выполняется какая то функция , при этом появляются какие то элементы и тд

    Кстати, фреймы ,я так понимаю,изначально при загрузке на странице есть
    Для этого какая то причина есть? почему не добавлять их в нужный момент ?
     
    Последнее редактирование модератором: 27 окт 2019
  7. ZmeYEditioN

    ZmeYEditioN Писатель

    Регистр.:
    18 сен 2019
    Сообщения:
    5
    Симпатии:
    0
    Тут можно посмотреть вживую
    http://surfquests.ru/test/

    Желаемое поведение:
    1) Пользователь нажимает на кнопку - Например пройти ежедневки
    2) Выскакивает надпись и счёт, как проходятся задания (Таблицу скрываю)
    3) После этого пользователь другую кнопку нажимает, проходятся другие задания

    И чтобы при входе на страницу скрипт не срабатывал, а именно только при нажатии на определённую кнопку.

    Если я ставлю во фрейме например onclick, то при нажатии на кнопку, проходится только 1 задание, а не срабатывает полностью скрипт.

    Если фрейм убрать, то вообще ничего не происходит, бонусы не собирает, ничего не отображает. По этому пока так сделал

    Как добавить фрейм в нужный момент знал бы как сделать, сделал) Но желательно сам скрипт подкорректировать, по скольку если я напирмер скрипт с базы школы и скрипт с ежедневок в 1 файл запихиваю, то начинает тупить, и не работать)
    Хотел его подкорректировать и не разделять по разным файлам, а засунуть в общий например script.js но поведение странное
     
    Последнее редактирование: 29 окт 2019