[Read-only GitHub mirror]
docs.pvzm.net
icon: function#
LoadMenu#
Loads a menu overlay, injects its HTML, then runs its JS.
Signature#
LoadMenu(menuId, background, extraData = {}, debounceElement) => Promise<HTMLDivElement>
Parameters#
menuId
Menu identifier.
Used for asset URLs and the container ID.background
Optional background image URL.
Applied asbackground: url(...) no-repeat.extraData
Object passed into the menu script.
Default is{}.debounceElement
Optional DOM element to mark while loading.
Toggles thecantSelectclass during fetch.
Behavior#
- Ensures
#dAllexists viagetDAll. - Chooses render target:
#dSurfaceif it exists anddisplay === "block".- Otherwise
#dAll.
- Creates a full-screen container:
id="dMenu_<menuId>". - Sets
z-indexto9999 + menusAmount. - Appends HTML before running the menu script.
- Runs
menu/js/<menuId>.jswithnew Function(...).
The script receives:
menuContainermenuIdextraData
After mounting, it updates visibleMenus.
Returns#
The created menu container element.
Errors#
- Rejects if
#dAllnever appears in time. - Rejects on network errors during
fetch. - Does not reject on HTTP
404by itself. - Throws if the menu JS throws.
Example#
const menu = await LoadMenu("Options", null, { from: "pause" });
menu.classList.add("fade-in");
{% hint style="warning" %}
Do not load the same menuId twice at once. UnloadMenu uses getElementById, which becomes ambiguous.
{% endhint %}