惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
V
Visual Studio Blog
C
Check Point Blog
Google DeepMind News
Google DeepMind News
S
SegmentFault 最新的问题
博客园 - 聂微东
量子位
T
Tailwind CSS Blog
罗磊的独立博客
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
L
LangChain Blog
小众软件
小众软件
Engineering at Meta
Engineering at Meta
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Security Latest
Security Latest
M
MIT News - Artificial intelligence
Know Your Adversary
Know Your Adversary
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
大猫的无限游戏
大猫的无限游戏
H
Help Net Security
爱范儿
爱范儿
T
The Exploit Database - CXSecurity.com
有赞技术团队
有赞技术团队
V
Vulnerabilities – Threatpost
Martin Fowler
Martin Fowler
A
Arctic Wolf
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
Cyberwarzone
Cyberwarzone
阮一峰的网络日志
阮一峰的网络日志
The Hacker News
The Hacker News
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
GbyAI
GbyAI
Latest news
Latest news
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
腾讯CDC
AWS News Blog
AWS News Blog
aimingoo的专栏
aimingoo的专栏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
Lohrmann on Cybersecurity
博客园 - Franky
S
Securelist
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Threatpost
美团技术团队

jQuery

jquery 有什么树形可编辑表格的插件吗? - V2EX Jquery Datatable 前端分页 Checkbox 跨页全选的问题 - V2EX 想提取 jQuery 中的一些函数单独使用,有什么好方法吗 - V2EX 有没有小的简单的 jquery 路由 - V2EX 关于 JQuery.load(html)加载 html,导致父 html 的$.fn 以及$.unbind 失效的问题 - V2EX 使用 jquery.validate 插件对动态新增的表单进行校验 - V2EX <script id="aaa" src="xxx.com/foo.js"></script> 用 $.getScript(...) 可以把 id="aaa" 一起设置进去吗? - V2EX 为什么我的 select 的 change 事件会失效? - V2EX 初学者在做做登陆界面使用 jQuery ajax()方法时直接出现 error, XMLHttpRequest.status=0,XMLHttpRequest.readyState=0,textStatus=error - V2EX 请教一个 jquery contextmenu 问题,不同事件源怎么合到一个菜单里 - V2EX jQuery.extend 在深复制时,为什么需要判断 isPlainOjbect?(不是问 isPlainOjbect 方法的原理) - V2EX jquery 通过 ajax 返回新的 url 给前端重定向算前后端分离吗? - V2EX 前端 websocket 实时接收到音频流数据,如何在 web 端实时播放 - V2EX scrollTop()引发的一个操作问题 - V2EX jQuery 选择特定尺寸图片问题 - V2EX 如何在提交表单后获取到动态添加的 inpu 的值 - V2EX pdfObject 怎么监听进度 - V2EX 能帮我找找这个页面的细节 和 尺寸是那个 ajax 和 url 加载的吗? - V2EX 问个 Jquery 的选择元素的问题 - V2EX jQuery UI dialog 有熟悉的么,我想问个问题 - V2EX 实现滚动条离顶端一定距离之后异步加载广告 - V2EX 求指点 Refused to set unsafe header "cookie" - V2EX 问个 JQ 的选择节点的问题 - V2EX jquery 如何实现点击 p( class=‘aa’,没有 id)而选中 p 里面的文字? - V2EX 可以用 jquery 模拟键盘按键吗? - V2EX 外行请教京东 618 寻金记是怎么实现的? - V2EX 请教 jquery 跟换图片地址后展示的问题 - V2EX function 返回 ajax 结果 - V2EX Jquery 在移动端如何让返回能够不刷新页面? - V2EX jq ajax 返回的数据怎么获取其中一部分? - V2EX jquery 循环绑定事件问题 - V2EX jquery 表单验证 each 为什么不能 key 变量 - V2EX jquery 引入在底部 $ready 就要用到$ 但页面还没加载 jquery 不用$ready 下面的 jq 代码就没办法运行 - V2EX 注册了个域名,专门用于自己插件库的演示和文档说明 - V2EX 捏了个小 app,求推荐好看的下载页面模板 - V2EX 关于跟随鼠标移动的两个 js 功能合并问题,求解! - V2EX 新手问个问题呗? - V2EX 最新最全的城市三级联动插件 - V2EX 分享一个基于 jQuery 开发的强大的 CMS - V2EX 浮动 [电梯] 或 [回到顶部] 小插件: iElevator.js - V2EX 自制 WEB 前端插件库,欢迎使用~ bootstrap modal event 多次绑定 - V2EX Jquery 如何实现 Ajax 自动更新 table,并且不影响 js 事件 - V2EX 愿意付费帮忙修改一个 jq 插件! - V2EX 请问下 draggable 怎么实现拖动前后的元素不一样 - V2EX 自己写的一套 jquery 组件库 jquery mobile 的动态加载感觉好难用啊 jquery data() 返回数据类型不统一 - V2EX V2 的大神们帮我看看, JQuery 跨域请求遇到点问题 - V2EX
油猴脚本能拦截$(document).ready 吗? - V2EX
Tsccai · 2023-09-13 · via jQuery

这是一个创建于 1005 天前的主题,其中的信息可能已经有所发展或是发生改变。

最近在研究一个古老的系统,想写一个油猴脚本。我发现页面中有这样的代码:

$(document).ready(
  closeIt();
)

程序会在 dom 加载完后检查浏览器版本,不满足直接关闭页面窗口。 那么,油猴脚本能否拦截 ready 函数,不让其执行原来的程序呢?

kkk9

1

kkk9      2023 年 9 月 13 日

实践出真知!

```javascript
(function() {
'use strict';
$(document).ready(function() {
// ... 你自己的代码
}
})
```

kkk9

2

kkk9      2023 年 9 月 13 日

漏了一个) 记得自己补足

ysc3839

3

ysc3839      2023 年 9 月 13 日 via Android

拦截 ready 肯定行呀,替换掉“$”,然后调用原函数,判断一下传入的参数是不是 document ,或者返回的对象有没有 ready 函数,有的话替换掉 ready 。
不过个人感觉从检查浏览器版本那下手会更好吧?建议能给原网页。

caomu

4

caomu      2023 年 9 月 13 日 via Android

如果不是直接载入脚本,而是用浏览器扩展载入的话,主流的 gm 、tm 、vm 扩展应该都是支持设置脚本生效时间,默认是页面载入完成后,也可以手工改成载入开始时。

vvhy

5

vvhy      2023 年 9 月 13 日

用//@run-at document-start ,还不够快的话去设置开启即时注入

Tsccai

6

Tsccai      2023 年 9 月 13 日

@ysc3839 呃,因为网页其他代码还需要用 jQuery ,所以直接干掉$是不可取的。我是准备在原本的 closeIt 函数加载后,ready 执行前,用油猴注入一个新的 closeIt 函数,函数里面啥也不干。但这样干有一个小瑕疵,就是不能保证每次都成功。

ysc3839

7

ysc3839      2023 年 9 月 13 日 via Android

@Tsccai 并不是直接干掉,而是“然后调用原函数”,所以并没有问题。

ysc3839

8

ysc3839      2023 年 9 月 13 日 via Android

@Tsccai 如果 closeIt 是全局的话,似乎可以用 getter 和 setter 来阻止覆盖。
另外还是建议给出原网站,以便判断最佳方案。

Tsccai

9

Tsccai      2023 年 9 月 13 日

@kkk9 我这里测试结果是原网页的 ready 回调函数先执行,然后油猴注入的代码后执行。我只想让原页面中的 ready 回调函数不要执行

Tsccai

10

Tsccai      2023 年 9 月 13 日

@ysc3839 原网页位于单位内网,不方便展示。不过 closeIt 这个函数确实在 window 对象下,我其实通过覆盖一个同名函数的方式也能大致实现,就是不大稳定

Puteulanus

14

Puteulanus      2023 年 9 月 14 日

我问 ChatGPT 它这么说的:
$(document).ready() 内部使用了原生 JavaScript 的 document.addEventListener("DOMContentLoaded", callback) 或者 Internet Explorer 的 document.attachEvent("onreadystatechange", callback)。

那在 @run-at document-start 的时候直接把 document 上的这两个函数劫持掉试试

openmynet

15

openmynet      2023 年 9 月 14 日

```js

// @run-at document-start

Object.defineProperty(window, "$", {
get: () => {
return (selector) => {
const node = window._$(selector);
if (node && selector instanceof Document) {
node.ready = (callback) => {
console.log("$ has been replaced");
if (typeof callback == "function") {
callback();
}
};
}
return node;
};
},
set: (fn) => {
window._$ = fn;
},
});

```

chnwillliu

17

chnwillliu      2023 年 9 月 14 日 via Android

为什么要覆盖这些?覆盖 $.fn.ready 不就行了?

看来 jQuery 是真老了,没人知道了。

$.fn.ready = function (){

}

Marlon

18

Marlon      2023 年 9 月 14 日 via iPhone

@vvhy 感谢,最近恰好遇到一个要阻止自动执行函数,试试提前注入,重写方法。

Tsccai

19

Tsccai      2023 年 9 月 27 日

过了半个月终于是有空在单位的电脑上试一下了。
首先,ready 这个函数还被其他 jQuery 的插件和脚本使用,所以 @chnwillliu 直接覆盖为一个空函数的方案并不可行。
不过,我们可以在覆盖的这个函数内部对传入的回调函数`cb`进行过滤,检测到`cb.toString().indexOf('closeIt')>-1`时直接返回,否则则执行该回调函数即可。也不再需要去覆盖 closet()函数本身了。

golangggg

20

golangggg      2024 年 4 月 8 日

@vvhy 大佬, 请问您说的设置开启即时注入 这个在哪里, 我没搜到资料,
我目前的问题就是设置了 @run-at document-start 后 偶尔好用, 偶尔不好用,
目标站, 在代码第一行就执行了 alert(); 我想抵消掉这个 alert

vvhy

21

vvhy      2024 年 4 月 9 日

@golangggg #20 我用的是 tampermonkey ,设置里配置模式选择高级

golangggg

22

golangggg      2024 年 4 月 9 日

@vvhy 非常感谢, 昨晚我自己摸索了一下 确实在高级里有一个注入模式 ,改成及时之后真的很有效