Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
chopins opened this issue May 31, 2024 · 14 comments

Comments

@chopins
Copy link

chopins commented May 31, 2024

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

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

@CodFrm
Copy link
Member

CodFrm commented May 31, 2024

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

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

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

lisonge/vite-plugin-monkey#151

@chopins
Copy link
Author

chopins commented May 31, 2024

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

@CodFrm
Copy link
Member

CodFrm commented May 31, 2024

你为什么需要修改iframe?

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

@chopins
Copy link
Author

chopins commented Jun 3, 2024

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

@CodFrm
Copy link
Member

CodFrm commented Jun 3, 2024

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

@chopins
Copy link
Author

chopins commented Jun 4, 2024

没那么复杂,也不是展示一个全新页面。
比如,目前是可以直接打开 /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
Copy link
Author

chopins commented Jun 5, 2024

@CodFrm
我创建了一个PR #287

1 similar comment
@chopins
Copy link
Author

chopins commented Jun 5, 2024

@CodFrm
我创建了一个PR #287

@CodFrm
Copy link
Member

CodFrm commented Jun 5, 2024

这样有什么问题吗?

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
Copy link
Member

CodFrm commented Jun 5, 2024

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

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

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

@chopins
Copy link
Author

chopins commented Jun 5, 2024

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

@CodFrm
Copy link
Member

CodFrm commented Jun 5, 2024

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

@chopins
Copy link
Author

chopins commented Jun 13, 2024

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

@CodFrm
Copy link
Member

CodFrm commented Jun 17, 2024

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

@CodFrm CodFrm closed this as completed Jun 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants