diff --git a/web/js-src/register-element.js b/web/js-src/register-element.js index dc57ceda3..8f515109b 100644 --- a/web/js-src/register-element.js +++ b/web/js-src/register-element.js @@ -3,6 +3,32 @@ */ var private_registry = {}; +/** + * Lookup a previously registered custom element. + * + * @param {string} element_name The internal element name, previously used to + * register the element with the private registry. + * + * @returns {object|null} The element data in the registry, or null if there is + * no such element name registered. + * + * The returned object will have `name`, `class`, and `internal_name` + * properties listing the external name, implementing class, and internal name + * respectively. + */ +export function lookup_element(element_name) { + let data = private_registry[element_name]; + if (data !== undefined) { + return { + "internal_name": element_name, + "name": data.name, + "class": data.class + }; + } else { + return null; + } +} + /** * Register a custom element. * diff --git a/web/js-src/ruffle-player.js b/web/js-src/ruffle-player.js index 34ee44ae1..b3d3f85ab 100644 --- a/web/js-src/ruffle-player.js +++ b/web/js-src/ruffle-player.js @@ -1,5 +1,6 @@ import load_ruffle from "./load-ruffle"; import ruffle_shadow_template from "./shadow-template"; +import { lookup_element } from "./register-element"; export let FLASH_MIMETYPE = "application/x-shockwave-flash"; export let FUTURESPLASH_MIMETYPE = "application/futuresplash"; @@ -61,13 +62,17 @@ export class RufflePlayer extends HTMLElement { */ is_unused_fallback_object() { let parent = this.parentNode; - do { - if (parent.nodeName === "RUFFLE-OBJECT") { - return true; - } + let element = lookup_element("ruffle-object"); - parent = parent.parentNode; - } while (parent != document); + if (element !== null) { + do { + if (parent.nodeName === element.name) { + return true; + } + + parent = parent.parentNode; + } while (parent != document); + } return false; }