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

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
IT之家
IT之家
H
Heimdal Security Blog
Jina AI
Jina AI
宝玉的分享
宝玉的分享
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
AWS News Blog
AWS News Blog
C
Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Hacker News
The Hacker News
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threatpost
S
Securelist
P
Privacy International News Feed
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 聂微东
博客园 - 叶小钗
J
Java Code Geeks
V
V2EX
博客园 - Franky
Spread Privacy
Spread Privacy
K
Kaspersky official blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
C
Cybersecurity and Infrastructure Security Agency CISA
C
CERT Recently Published Vulnerability Notes
Latest news
Latest news
NISL@THU
NISL@THU
罗磊的独立博客
W
WeLiveSecurity
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园_首页
V
Visual Studio Blog

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 非常感谢, 昨晚我自己摸索了一下 确实在高级里有一个注入模式 ,改成及时之后真的很有效