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

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>

И когда запускаешь сайт, из фрейма естесвенно сразу все скрипты загружаются(((
Подскажите как сделать так, чтобы скрипт грузился только при нажатии на кнопку?
 
Последнее редактирование модератором:
А зачем во фрейме onload , если нужно что бы скрипт только при нажатии на кнопку отрабатывал?

Если фрейм в какие то моменты отображается и нужно что бы при этом срабатывали скрипты - можно в них добавить проверку на видимость элемента фрейма. То есть если фрейм видим - выполняем скрипт. нет - выходим
 
Последнее редактирование модератором:
Если во фрейм не ставить, то он вообще не работает(
 
не работает клик на кнопку, если убрать из фрейма ?
Именно, почему-то вообще ничего не происходит

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

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

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

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

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

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

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

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