zip11 发表于 2024-3-14 21:09:55

GM_notification buttons 编写问题

本帖最后由 zip11 于 2024-3-15 11:03 编辑

https://docs.scriptcat.org/docs/dev/api/

参照 api编写,的GM_notification   buttons ,但是没有显示 button

,我使用的是chrome游览器,测试 GM_notification 进度条功能 也是正常的

```
// ==UserScript==
// @name         通知按钮示例
// @namespace    scriptcat_namespace
// @version      0.1
// @description创建一个含有按钮的通知
// @author       Your Name
// @match      *://*/*
// @grant      GM_notification
// ==/UserScript==

(function() {
    'use strict';

    // 调用 GM_notification 创建一个通知,并添加按钮
    GM_notification({
      title: '示例通知',
      text: '这是一个带按钮的通知',
      image: '您的图标链接', // 可选:通知中显示的图片
      highlight: true, // 可选:在显示通知时突出显示网页
      silent: false, // 可选:是否以静音方式显示通知
      timeout: 5000, // 可选:通知显示的时间,设置为 0 则不会自动关闭
      onclick: function() { // 当通知点击时执行的函数
            console.log('通知被点击了!');
      },
      ondone: function(clicked) { // 当通知关闭时执行的函数
            if (clicked) {
                console.log('通知被用户点击关闭');
            } else {
                console.log('通知自动关闭');
            }
      },
      buttons: [
            {
                title: '按钮1', // 按钮的标题
                iconUrl: '按钮1的图标链接', // 按钮图标的链接
                onclick: function() { // 按钮点击时执行的函数
                  console.log('按钮1被点击了!');
                }
            },
            {
                title: '按钮2',
                iconUrl: '按钮2的图标链接',
                onclick: function() {
                  console.log('按钮2被点击了!');
                }
            }
      ]
    });
})();

```

### 参照回答,重新写了个例子,可以弹出 按钮 通知
```

// ==UserScript==
// @name      GM_notification创建带有按钮的通知示例
// @namespace   scriptcat
// @description 使用GM_notification创建带有按钮的通知示例
// @include   *
// @grant       GM_notification
// @grant       GM_openInTab
// @grant       GM_closeNotification
// @version   1
// ==/UserScript==

// 定义通知按钮点击的回调函数
function onButtonClicked(notifId, buttonIndex, games) {

if (buttonIndex === 1) {
    // 如果点击的是第二个按钮("马上去白嫖"),则打开所有游戏的链接
    for (let key in games) {
      GM_openInTab(games.url);
    }
}
// 关闭通知
GM_closeNotification(notifId);
}

// 模拟获取今日可白嫖的游戏列表
function checkForFreeGames() {

// 这里应该有一个实际检查游戏的代码
// 下面是模拟的游戏数据
let games = {
    game1: { title: "游戏1", url: "http://game1.com" },
    game2: { title: "游戏2", url: "http://game2.com" },
};

// 模拟消息
let msg = "今天有以下游戏可以白嫖: " + Object.values(games).map(game => game.title).join(", ");

// 调用GM_notification创建通知
GM_notification({
    title: "今日白嫖名单",       // 通知标题
    text: msg,                  // 通知文本内容
    buttons: [{               // 定义两个按钮
      title: "我知道了",          // 第一个按钮文本
    }, {
      title: "马上去白嫖",         // 第二个按钮文本
    }],
   
    onclick: function(id, btn) {
      onButtonClicked(id, btn, games);// 当按钮被点击时的处理逻辑
    },
    timeout: 10 * 1000,          // 通知存在时间,单位毫秒

    ondone: function(click, id) {
      if (!click) {
      // 如果通知超时关闭,没有发生点击,则执行的逻辑
      console.log('通知已自动关闭');
      }
    }
});

}

// 执行检查白嫖游戏的函数
checkForFreeGames();

王一之 发表于 2024-3-14 21:09:56

已经忘记了。。。。我现在换了Mac,好像也不支持了

哥哥看看这个脚本:104行

https://scriptcat.org/zh-CN/script-show-page/77/code
页: [1]
查看完整版本: GM_notification buttons 编写问题