Как очистить данные с jQuery? - PullRequest
0 голосов
/ 06 января 2020

Я создаю расширение chrome, которое собирает данные с определенного сайта. На этом сайте есть список элементов, по которым при нажатии он будет извлекать данные и отображать их в модальном режиме.

Я получил свой код на работу, но он выглядит хакерским. Мне нужно решить две проблемы.

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

2) Всякий раз, когда я ищу элементы с jQuery, я получаю kfinit. Я думаю, что мне нужно включить document.ready где-нибудь, чтобы решить эту проблему, но я понятия не имею, где он будет принадлежать.

Мой код выглядит так:

//content.js
const delay = ms => new Promise(res => setTimeout(res, ms))
const clickEvent = document.createEvent('MouseEvents')
const dblClickEvent = document.createEvent('MouseEvents')
clickEvent.initEvent('mousedown', true, true)
dblClickEvent.initEvent('dblclick', true, true)

//this is wrapped within a function
for (const item of items) {
  await clickToOpenModal(item)
}

async function clickToOpenModal(item) {
  item.dispatchEvent(clickEvent)
  item.dispatchEvent(doubleClickEvent)
  const dataElem = $('.data')[0]
  const button = $('.button')[0]
  await delay(300)
  //Do stuff with dataElem
  button.click() //this also throws an error sometimes
}

dataElem отображается как k.fn.init, когда consoleLogged, но иногда он не работает как задумано. Иногда эту кнопку также нельзя нажимать.

...