GMX_menu

A simple userscript menu manager, treats all menu items as a GMX_menu object.

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.gf.qytechs.cn/scripts/473817/1240400/GMX_menu.js

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

作者
DianaBlessU
版本
0.1.1
建立日期
2023-08-24
更新日期
2023-08-25
尺寸
2.8 KB
授權條款
未知

A simple userscript menu manager, treats all menu items as a GMX_menu object.

Key Features:

  1. Create and access menu items via GMX_menu object, no need to care the item order.
  2. Caption text of menu item can be changed at any time.
  3. Menu item can act as a Check box.
  4. Menu items can act as a radio button group.

Usage:

    // To use this script, you need to grant GM_registerMenuCommand and GM_unregisterMenuCommand.

    // Install a new menu, (all previous menu items will be removed)

    //  The value of name must be unique in the menu.
    //  If autoRefresh is true, when the menu item is modified, the rerendering will be automatically executed, 
    //  otherwise its appearance will remain unchanged unless you manually call the GMX_menu.refresh() method.
    //  If a menu item has a checked attribute, it will be rendered as a checkable entry.
    //  If it also has a group attribute at the same time, it will be associated to a radio button group.

    const sampleOptions = {
        autoRefresh: true,
        items: [
            {name: "cmd1", text: "🥣 Radio 1", checked: true, group: "g1", callback: ()=>{alert("Radio 1 clicked!")}},
            {name: "cmd2", text: "⭐ Radio 2", checked: false, group: "g1", callback: ()=>{alert("Radio 2 clicked!")}},
            {name: "sep1", separator: true},
            {name: "cmd3", text: "🍬 Checkbox 3", checked: false, callback: ()=>{alert("Checkbox 3 clicked!")}},
            {name: "cmd4", text: "🍦 Command 4", callback: ()=>{alert("Command 4 clicked!")}},
        ]
    }
    GMX_menu.install(sampleOptions);

    // Remove menu.
    GMX_menu.uninstall()

    // Change the caption text of a menu item by name.
    GMX_menu.setText(name, text)

    // Get the check state of a menu item by name.
    // If the item is unchackable, it will returns undefined.
    GMX_menu.isChecked(name)

    // Trigger the select event of specific menu item by name.
    // The check state of the item will also be changed if it's checkable.
    GMX_menu.triggerSelect(name)

    // Select the specific item on userscript menu without excuting it's callback function.
    // Usually used to modify the check state of a specific menu item.
    GMX_menu.renderSelect(name)

    // Rebuild the whole menu by installed option.
    GMX_menu.refresh()