groton-school / knowledgebase

Knowledgebase website
https://kb.groton.org
GNU General Public License v3.0
0 stars 0 forks source link

detect framed document and abort waiting for embed #2

Closed github-actions[bot] closed 1 year ago

github-actions[bot] commented 1 year ago

https://api.github.com/groton-school/knowledgebase/blob/f1efea854263de3ed49a59cca3651200cca89e00/src/Helper/waitForSelector.ts#L28


 *
 * @param selector Selector for child elements to be returned
 * @param parentSelector Selector of DOM element to wait for
 *   (Optional, defaults to `'.CMSgoogledocembed'` matching an embedded
 *   Google Doc page)
 * @returns An array of elements matching `selector`
 */
export default function waitForSelector(
  selector: string
): Promise<HTMLElement[]> {
  return new Promise((resolve) => {
    const parent = document.querySelector(parentSelector) as HTMLElement;
    if (parent) {
      return resolve(process(parent, selector));
    }
    // FIXME detect framed document and abort waiting for embed
    const observer = new MutationObserver(() => {
      const parent = document.querySelector(parentSelector) as HTMLElement;
      if (parent) {