scriptscat / scriptcat

脚本猫,一个可以执行用户脚本的浏览器扩展
https://docs.scriptcat.org
GNU General Public License v3.0
1.38k stars 128 forks source link

能不能内置一个可打开的页面用来运行前台脚本,而不需要打开任何网站 #284

Closed chopins closed 3 months ago

chopins commented 4 months ago

在脚本管理页面,运行时,可以新开一个TAB,打开一个内置页面,用来运行该脚本

我最近写了一个TOTP的验证脚本,替代各种APP进行2FA验证,这样有浏览器后,就不需要另行安装程序。 而这个脚本并不需要打开任何特定网站,如果是PC还好,可以打开一个本地页面,手机端就很麻烦,必须要开一个网站页面。

CodFrm commented 4 months ago

可以用后台脚本,你可以参考我这个脚本,不过他好像有些性能问题

https://github.com/CodFrm/userscript/blob/main/topt-script/src/main.ts

他是为vite-plugin-monkey提交的,目前还没有合并

https://github.com/lisonge/vite-plugin-monkey/pull/151

chopins commented 4 months ago

似乎还无法满足需求, /src/background.html 里面的 iframe 默认是隐藏的, 也不能修改这个iframe 另外 GM_registerMenuCommand 也是没有效果的

CodFrm commented 4 months ago

你为什么需要修改iframe?

如果是调试模式,GM_registerMenuCommand好像是没有效果的

chopins commented 4 months ago

修改iframe 是为了让脚本创建的丰富内容显示出来 这样脚本能有丰富的交互能力

CodFrm commented 4 months ago

@chopins 你意思是想通过脚本来展示一个全新的页面?目前是没有这种API的,实现上好像也不太好说,后续可以看看

chopins commented 4 months ago

没那么复杂,也不是展示一个全新页面。 比如,目前是可以直接打开 /src/background.html, 然后控制台把 /src/sandbox.html 这个iframe 的显示,就能实现我的目的。

比如下面的例子:

return new Promise((resolve, reject) => {
      GM_registerMenuCommand('test', ()=> {
          createBtn('添加', 'add', 'add', add);
      });
});

当点击注册的菜单后,看截图,页面内容,菜单,以及右边的开发工具

截图 2024-06-04 11-42-17

chopins commented 4 months ago

@CodFrm 我创建了一个PR #287

chopins commented 4 months ago

@CodFrm 我创建了一个PR #287

CodFrm commented 4 months ago

这样有什么问题吗?

image
// ==UserScript==
// @name         2fa 演示
// @namespace    https://bbs.tampermonkey.net.cn/
// @version      0.1.0
// @description  一个演示
// @author       You
// @background
// @grant GM_registerMenuCommand
// @grant GM_setClipboard
// ==/UserScript==

return new Promise((resolve, reject) => {
    GM_registerMenuCommand("Github 2fa", () => {
        GM_setClipboard("123456")
    });
});
CodFrm commented 4 months ago

还是说是想要一个可以做一些操作的页面么?(例如有备份、添加、导入之类的按钮)

关于这点,目前确实没有太好的办法,可以尝试一下 UserConfig?https://docs.scriptcat.org/docs/dev/config/

另外就是用一个额外的油猴脚本,目前很多作者的做法是打开一个自己的网站(或者脚本发布页),然后对该页面做一些修改,添加上脚本自身的配置

chopins commented 4 months ago

其实主要是移动端的需求, 移动端对于文件访问限制太多,所以我想到了在扩展里内置一个页面办法

CodFrm commented 4 months ago

@chopins 还是和我上面说的一样的,并不需要扩展内置,打开一个属于你自己的页面,在那个页面上进行操作就好

chopins commented 3 months ago

@CodFrm 如果没网络的情况下,要怎么打开一个页面?特别是当手机没任何网络,而手机浏览器又不允许打开本地页面的时候。 其实这个功能本质就是让一个脚本成了一个特别的APP(与什么小程序,Electron类似)。现在scriptcat的后台脚本其实也是这么一个功能,只不过没有UI交互而已。 另外可以关闭这个issue了

CodFrm commented 3 months ago

@chopins 没有网络,那么也没太大意义了,脚本都无法工作