本帖最后由 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[key].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();