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

脚本重载功能 #298

Open
CodFrm opened this issue Jul 9, 2024 · 5 comments
Open

脚本重载功能 #298

CodFrm opened this issue Jul 9, 2024 · 5 comments
Labels
enhancement New feature or request

Comments

@CodFrm
Copy link
Member

CodFrm commented Jul 9, 2024

ScriptCat改进建议
https://bbs.tampermonkey.net.cn/thread-7031-1-1.html
(出处: 油猴中文网)

能不能让猫做一个重载脚本的功能,每次修改代码调试都需要刷新页面来重载脚本,比较麻烦,遇到一些流媒体网站刷新一次要等好久,或者一些特定场景进入时常比较久,很多时间被浪费了

@CodFrm CodFrm added the enhancement New feature or request label Jul 9, 2024
@CodFrm
Copy link
Member Author

CodFrm commented Jul 9, 2024

mv3后续计划

@CodFrm CodFrm added this to the Manifest V3之后计划 milestone Jul 9, 2024
@KnIfER
Copy link

KnIfER commented Jul 16, 2024

这个很简单啊,。油猴脚本就可以,vscode修改后一键复制,然后想办法(AHK配合扩展功能),自动切换浏览器 执行剪贴板中的脚本。这需要将脚本设计成支持热重载,即重载前自己把监听器等东西卸载了,才好重载啊。

坑也挺多的。

原本的方式:我让ahk复制vscode后,粘贴到devtools里面回车运行。

现在我的方式是:1. 随便一个扩展里增加快捷键
->ahk复制文本,切换,发送快捷键
->扩展收到指令,读取剪贴板,发送消息给user.js
-> 页面上的油猴脚本(user.js)收到消息,先尝试eval执行event.传过来的脚本,不行的话,再返还给扩展,重新使用 tabs.executeScript

话说用户脚本是怎么执行的?tabs.executeScript 是隔离的沙箱环境,而油猴能直接修改真实的window?

@CodFrm
Copy link
Member Author

CodFrm commented Jul 16, 2024

@KnIfER 用户的意思应该是脚本更新之后,就自动刷新页面,方便调试,而不是从脚本层面去做

用户脚本是运行在页面上的,通过Proxy构建了一个隔离的沙箱环境

@KnIfER
Copy link

KnIfER commented Jul 17, 2024

@KnIfER 用户的意思应该是脚本更新之后,就自动刷新页面,方便调试,而不是从脚本层面去做

用户脚本是运行在页面上的,通过Proxy构建了一个隔离的沙箱环境

看他意思,和我需求是一样的,就是避免刷新,直接更新脚本逻辑。

不是 tabs.executeScript?unsafeWindow 可以和原页面一个环境的。

@CodFrm
Copy link
Member Author

CodFrm commented Jul 17, 2024

@KnIfER 又读了一下原文,好像是哥哥说的意思,我理解错了。。。。

那这样的话,脚本管理器层面就不好做了,就如哥哥说的,很多东西需要卸载,兼容问题应该挺多的

tabs.executeScript是注入到content环境,然后由content又再将脚本注入到原页面的,所以unsafeWindow才可以和原页面一个环境的。不过mv3后,好像是可以直接注入到原页面了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants