Как автоматизировать код, который требует нажатия кнопки в javascript в chrome инструментах разработчика - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть игровая среда, созданная третьей стороной. У него есть кнопка воспроизведения, так что каждый раз, когда я нажимаю на нее, происходят определенные события и генерируется куча json данных. Сейчас я пытаюсь собрать эти данные, но мне не нужно постоянно нажимать кнопку воспроизведения. Я посмотрел вверх Как автоматически щелкнуть по кнопке ввода , но я считаю, что решения, представленные там, работают только в начале загрузки окна. Моя проблема в том, что у меня есть только возможность изменить javascript из chrome developer tools, и я не верю, что изменения, внесенные в source's tab, сохраняются после того, как я обновлю sh страницу (я мог бы быть неправильно, но на основании того, что я наблюдал до сих пор, это то, что происходит). Как я могу заставить приведенный ниже код запускаться несколько раз (скажем, на данный момент всего 10), не нажимая кнопку Start Game, а только изменяя код в инструментах разработчика chrome?

console.log("loading...")

$(() => {

  $("#start-game-btn").click(event => {
    console.log("start-game")
    $("#errors").text("")
    event.preventDefault()
    const height = parseInt($("#height").val())
    const width = parseInt($("#width").val())
    const food = parseInt($("#food").val())
    let MaxTurnsToNextFoodSpawn = 0
    if ($("#food-spawn-chance").val()) {
      MaxTurnsToNextFoodSpawn = parseInt($("#food-spawn-chance").val())
    }
    const snakes = []

    $(".snake-group").each(function() {
      const url = $(".snake-url", $(this)).val()
      if (!url) {
        return
      }
      snakes.push({
        name: $(".snake-name", $(this)).val(),
        url
      })
    })
    if (snakes.length === 0) {
      $("#errors").text("No snakes available")
    }
    fetch("http://localhost:3005/games", {
      method: "POST",
      body: JSON.stringify({
        width,
        height,
        food,
        MaxTurnsToNextFoodSpawn,
        "snakes": snakes,
      })
    }).then(resp => resp.json())
      .then(json => {
        const id = json.ID
        fetch(`http://localhost:3005/games/${id}/start`, {
          method: "POST"
        }).then(_ => {
          $("#board").attr("src", `http://localhost:3009?engine=http://localhost:3005&game=${id}`)
        }).catch(err => $("#errors").text(err))
      })
      .catch(err => $("#errors").text(err))
  })
  console.log("ready!")
})

Я пытался сделать некоторое время l oop в начале, как,

$(() => {
  var count = 0
  while(count <= 10) {
    count++
    console.log("start-game")
    $("#errors").text("")
    event.preventDefault()
    .........

, но ничего не изменилось.

Также у меня нет опыта работы с jQuery и минимальных знаний по javascript, так что терпите меня. Заранее спасибо.

1 Ответ

0 голосов
/ 12 февраля 2020

Предполагая, что кнопка воспроизведения имеет уникальный идентификатор или класс, который делает ее надежно выбираемой при каждом обновлении sh, вы должны использовать надстройку браузера, такую ​​как TamperMonkey , чтобы добавить JS в целевой сайт , Используйте событие документа браузера DOMContentLoaded, чтобы запустить сценарий в соответствующее время.

(function() {
    document.addEventListener('DOMContentLoaded', (event) => {
       /*your code here*/
    });
})();
...