JSFiddle - React, Tailwind, and code Playground

by Haze32

JavaScript

javascript: (function () {
  function selectDropdownItem(context, dataAttribute, itemIndex, callback) {
    const input = context.querySelector(`[frsqa_fname="${dataAttribute}"]`)
    if (!input) return
    let nextElement = input.nextElementSibling
    let arrowTrigger = null
    while (nextElement) {
      arrowTrigger = nextElement.querySelector(
        "span > img.x-form-arrow-trigger",
      )
      if (arrowTrigger) break
      nextElement = nextElement.nextElementSibling
    }
    if (!arrowTrigger) return
    arrowTrigger.click()
    const downEvent = new KeyboardEvent("keydown", {
      key: "ArrowDown",
      keyCode: 40,
      bubbles: true,
    })
    const enterEvent = new KeyboardEvent("keydown", {
      key: "Enter",
      keyCode: 13,
      bubbles: true,
    })
    setTimeout(() => {
      input.focus()
      for (let i = 0; i < itemIndex; i++) {
        setTimeout(() => {
          input.dispatchEvent(downEvent)
        }, i * 20)
      }
      setTimeout(
        () => {
          input.dispatchEvent(enterEvent)
          if (callback) callback()
        },
        itemIndex * 20 + 50,
      )
    }, 200)
  }
  function findFormContext() {
    const contexts = [document]
    const iframes = document.getElementsByTagName("iframe")
    for (let i = 0; i < iframes.length; i++) {
      try {
        const iframeDoc =
          iframes[i].contentDocument || iframes[i].contentWindow.document
        if (iframeDoc) contexts.push(iframeDoc)
      } catch (e) {}
    }
    for (const context of contexts) {
      const serviceInput = context.querySelector('[frsqa_fname="Service"]')
      if (serviceInput) {
        selectDropdownItem(context, "Service", 73, () => {
          selectDropdownItem(context, "Category", 8)
        })
        selectDropdownItem(context, "DPW_CallType", 8)
        selectDropdownItem(context, "Location", 0)
        selectDropdownItem(context, "Owner", 8)
        return
      }
    }
  }
  findFormContext()
})()