如何让一个油猴脚本在页面完全加载后 再执行?

2020-02-05 15:54:57 +08:00
 amiwrong123

现在有一个护眼脚本能把大部分页面都改掉背景颜色。

在 gerrit 页面上也能改掉部分背景颜色,但是在代码部分却还是是白色。

如上,改掉部分背景颜色

如上,代码部分却还是是白色

我如果在页面加载完毕后,在像如下图所示再点一下,就可以使得整个页面都改掉背景颜色。

如上,我再点一下浅橄榄,才可以使得整个页面都改颜色

如何能够使得页面加载完毕后,再改掉所有所有背景颜色啊?

试了 setTimeout 和 https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event 里面的,好像不好使啊?

10306 次点击
所在节点    问与答
7 条回复
lxk11153
2020-02-05 16:06:41 +08:00
https://www.tampermonkey.net/documentation.php#_run_at

不过: dom 元素可以在页面加载完成后由 js 触发更改的呀
amiwrong123
2020-02-05 16:13:38 +08:00
@lxk11153
这个我也试了,脚本自带这个设置,但我设置各个选项,都不能使得整个页面都改掉颜色。

<img src="https://s2.ax1x.com/2020/02/05/1s9mjg.png" alt="1580890382(1)" border="0">
Seanfuck
2020-02-05 16:14:23 +08:00
Jquery 不是有个.ready()吗,这个不行?
keepeye
2020-02-05 16:16:49 +08:00
判断页面加载完成不靠谱,很多 js 都是异步执行修改 css 的
试试给 body 新增 class
<body class="protect_eye">

<style>
body.protect_eye{background:#abcdef !important;}
</style>
suotm
2020-02-05 16:24:28 +08:00
之前处理过类似的问题,用了一个别人写的函数,监控页面的某一个元素,如果改元素存在了就执行后续操作。

Gist:BrockA/2625891

(注册未满 30 天发不了连接,sorry )
amiwrong123
2020-02-05 19:08:50 +08:00
@keepeye
有点思路, 写了一句 js 代码可以改变颜色了。

但只有在页面完全加载后,在 F12 的 console 里运行这句话,才会成功。

如果把这句 js 代码写在油猴脚本里,就会报错,说这个元素是 undefine 的未定义的。
看来这个元素是动态加载出来的吧。之后按照网上说的 off on 解绑事件,绑定事件,但还是不好使。。
pys078
2020-06-03 18:38:54 +08:00
其实很简单啊,在前面的数据块里面加上这个
// @run-at document-end

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/642304

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX