GM_registerMenuCommand()注册菜单模板,TemperMonkey油猴脚本开发

注册菜单

  1. 点击事件
  2. 注册实例
  3. 设置默认值
  4. 将handle(手握实例的变量)赋值给一个变量
function menu_Func_click() {
    GM_setValue('Func', !GM_getValue('Func'));  // 开关
    GM_unregisterMenuCommand(menu_Func);  //卸载再注册
    // 强制等待下一个事件循环
    setTimeout(() => {
        menu_Func = menu_Func_regist();
    }, 0);
};
function menu_Func_regist() {
    return GM_registerMenuCommand(
        `${GM_getValue('Func') ? '✅' : '❌'}`,
        menu_Func_click,
        {
            accessKey: 'f',
            autoClose: false
        }
    );
};
if (GM_getValue('Func') === undefined) GM_setValue('Func', true);
let menu_Func = menu_Func_regist();

别的脚本采用了全部刷新的策略,用list然后全部遍历更新

问题:脚本加载了不止1次,但我希望只运行一次

https://github.com/Tampermonkey/tampermonkey/issues/1730
https://github.com/Tampermonkey/tampermonkey/issues/1279
解决:添加@noframes

chrome系利用@require调试本地脚本

https://www.cnblogs.com/hyaray/p/7509572.html

// ==UserScript==
// @name         Local Script DEBUG
// @namespace    http://tampermonkey.net/
// @version      2024-10-08
// @description  try to take over the world!
// @author       You
// @match        https://*/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @require      file:///home/root/my_local_script.js
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
})();

资源

https://learn.scriptcat.org/油猴教程/中级篇/本地文件访问权限与外部开发/

posted @ 2024-10-08 14:30  Nolca  阅读(20)  评论(0编辑  收藏  举报