想为 searchEngineJump: 搜索引擎跳转脚本 ,这个 UserScript(Tampermonkey 脚本)添加新功能(在下拉列表中单独加入一键搜索的按钮),已经实现在本地的 IDE 上开发。
看到 StackOverFlow 上有人说可以配合 browser-sync 实现自动刷新,当本地 JS 更改时,想自动刷新用户脚本的目标网址,比如百度的某具体搜索页面,而不是本地的某个 HTML 文件,这个怎么实现?
我查看了每一条 browser-sync 命令和配置信息,没有找到解决的思路,所以来寻求帮助。
PS:把百度的那个页面保存下来放到本地,然后再更改脚本,一通操作之后也能用,但总是很蹩脚,而且有些脚本就是在网页动态运行的时候起作用的,貌似这样也不行。
Trim21提供了,可能是到目前为止最好的大型UserScript开发解决方案,使用webpack配合LiveReloadPlugin实现模块化开发与自动化测试。
1
Team 2020-08-16 20:29:45 +08:00
同问
|
2
limuyan44 2020-08-16 20:53:59 +08:00
脚本引用本地 js 不就是自动生效的吗,不过要刷新当前页面就是了。
|
3
LittleWhiteMouse 2020-08-16 21:23:00 +08:00 via Android
脚本可以跨域请求。本地 http 服务器挂一个文件版本标识,脚本检测此标识发生变化则刷新页面。反正这种情况也不需要热更新。
|
5
Trim21 2020-08-16 21:35:32 +08:00 2
https://github.com/Trim21/webpack-userscript-template/blob/master/readme.cn.md (((
搭配 chrome 上的 livereload 插件 |
6
Mindjet OP @LittleWhiteMouse #3
「脚本检测此标识发生变化」,是使用定时器循环检测吗?还没有更好的方法? |
8
LittleWhiteMouse 2020-08-16 23:14:25 +08:00 via Android 1
@Mindjet 听起来有点 low,但原理都类似吧。检测变化,触发活动。这种情况 3 到 5 秒检测一次就够用,又是本地。性能上应该完全不影响的
|
9
autoxbc 2020-08-17 05:41:19 +08:00 1
browser-sync 也可以,需要使用 proxy 参数
Dynamic sites If you’re already running a local server with PHP or similar, you’ll need to use the proxy mode. Browsersync will wrap your vhost with a proxy URL to view your site. browser-sync start --proxy "myproject.dev" --files "my.user.js" 1. myproject.dev 是已存在的网站,可以来自于本地启动的服务器,也可以是互联网上的已有网站; 2. browser-sync 会在上面包装一下,注入自己的脚本来监听文件变化,此时域名变为 localhost:3000 ; 3. 浏览器载入后,由 Tampermonkey 注入脚本 my.user.js ,由于 proxy 模式造成域名变化,match 规则需要重新写; 4. 如果网站有自身域名检测,可能会出现非预期的重定向; |
10
Mindjet OP |
11
Mindjet OP 有个坑这里提下,Tampermonkey 中的 UserScript@require 的是本地文件,的确会每次都刷新缓存;但 Tampermonkey 不是这样的,我其实一直在用 Tampermonkey,更喜欢其 UI,没想到两者还是有不同的。
还有就是 Greasemonkey 好像在 Chrome Store 下架了,原因未知。 |
12
Mindjet OP @Trim21 #5
感觉这个 webpack 开发 UserScript 的项目,好像被忽视了,star<10 真的好用哭了 o(╥﹏╥)o 刚学 JavaScript,要是没这个项目,要学更多内容才能重构大型脚本 去 StackOverFlow 宣传下 https://stackoverflow.com/a/63478925/11901563 |