199ce36b创建于 2023年6月29日历史提交
import type { SelectorMessage } from "./types"

async function sendInvalidSelectors(selectors: string[]) {
  try {
    return await chrome?.runtime?.sendMessage({
      name: "plasmo:selector:invalid",
      payload: {
        selectors,
        url: window.location.href
      }
    } as SelectorMessage)
  } catch {}
}

export const querySelectors = (selectors: string[]) => {
  const result: Element[] = []
  const invalidSelectors: string[] = []
  for (const selector of selectors) {
    const element = document.querySelector(selector)
    if (!element) {
      invalidSelectors.push(selector)
    } else {
      result.push(element)
    }
  }

  if (invalidSelectors.length > 0) {
    sendInvalidSelectors(invalidSelectors)
  }

  return result
}

export const querySelector = (selector: string) => {
  const element = document.querySelector(selector)
  if (!element) {
    sendInvalidSelectors([selector])
  }

  return element
}

export const querySelectorAll = (selector: string) => {
  const elements = document.querySelectorAll(selector)

  if (elements.length === 0) {
    sendInvalidSelectors([selector])
  }

  return elements
}