分类下相关文章
2020-03-20 · 阅读 9966 · 字数 258
晚上看了一段几年前写的会计网校自动挂学时的 Tampermonkey 脚本。 我发现可读性太差了,要修改功能的时候,逻辑梳理起来异常痛苦。 为何痛苦 自动挂学时其实原理很简单,就是模拟正常的点击操作。 但是,我的代码存在几个问题 代码头部一堆公共函数,而真正的逻辑在后面,看起来特别别扭 代码全是各种遍历 tr, td 的操作,然后各种 1,2, 3 判断,不知所云 面向逻辑编程,而不是面向 HTML 编程 解决方法 封装好功能,函数名可读性好。不要在循环里处理各种逻辑 公共函数置后 更多注释。难说一个脚本不会为何10年。。。 全局 debug 开关,方便直观的看到问题出在哪里。或者封装一 ...
2018-12-17 · 阅读 12339
使用 Tampermonkey GM_xmlhttpRequest 循环提交几十次数据,服务器均报 500 异常时,会发现之后,再提交数据 console 中不再出现报错信息 服务器端 Nginx 中也没有请求日志 所以推测 Chrome 对请求进行了拦截。 在哪里能看到 HTTP 请求的报错信息 右键点击 tampermonkey 插件,选择“管理扩展程序”,在弹出的窗口中,点击 background.html 此时就能看到 HTTP 的错误信息了。 Failed to load resource: Request throttled Chrome 报的错误是这个,果然是被拦截了。网上 ...
2018-11-28 · 阅读 14980
一个自动化操作的需求,在新的 tab 页完成任务之后,使用 Tampermonkey 关闭这个 tab 页。 在当前最新版 Chrome 版本 70.0.3538.102(正式版本) (64 位)中测试 window.close() VM750:1 Scripts may close only the windows that were opened by it. 也就说,window.close() 只能关闭由 js 打开的窗口。如果这个窗口不是由 js 打开的,那就没有权限关闭。 function closeTab(){ window.open('', '_self', ''); ...
2018-11-25 · 阅读 10194
VueJS 现在越来越流行,用 vuejs 的网站也越来越多,导致我想自动挂个学时都得费点周折。 例如,课程列表会随着选择的 select 下拉框不同的年份,展示不同的数据。 要想遍历到所有年份的课程数据,实现的方法 // 获取历年切换 var years = $('select[name="plans"] option').length; GM_log("共计" + years + "年的课程"); for (var year = 0; year < years; year++) { // 间隔时间去获取课程列表 (fu ...
2018-11-23 · 阅读 26318
Tampermonkey 存储临时数据,之前只用过 cookie 的读存方式,非常麻烦。 看一下内置的 GM_setValue / GM_getValue GM_setValue(name, value) Set the value of 'name' to the storage. GM_getValue(name, defaultValue) Get the value of 'name' from storage. 简单测试 // ==UserScript== // @name New Userscript // @namespace http://tampermo ...
2019-01-17 · 阅读 12588
之前搞定了tampermonkey 获取 cookie, 现在需要设置 cookie 的方法 function setCookie(c_name, value, expiredays) { var exdate = new Date(); exdate.setDate(exdate.getDate()+expiredays); document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expi ...
2018-10-19 · 阅读 12536
在 tampermonkey 模拟自动提交数据 $('input[placeholder="text1"]')[0].value = 1; $('input[placeholder="text2"]')[0].value = 2; $('.submit .btn')[0].click(); 运行之后,总是提示,没有填写数据。。。 看了一下页面中的 js,发现提交部分是用 vuejs 写的,input 的值存储在 vuejs data 的变量中。 理论上,input 是设置了 v-model 双向绑定,数据在填写之后会自动同步到 data 相应变量中。 ...
2018-12-17 · 阅读 9567
示例 Get 请求 // @require https://cdn.staticfile.org/jquery/1.9.1/jquery.min.js // @grant GM_xmlhttpRequest // @connect sunzhongwei.com GM_xmlhttpRequest ( { method: "GET", url: "http://xxx.sunzhongwei.com/api/get_something", onload: function (respons ...
2021-03-26 · 阅读 18727 · 字数 158
例如点击一个按钮 $('.btn-wrap a')[0].click(); 注意 $('.btn-wrap a').click(); 在 chrome console 中可以触发 vuejs 的 click 事件,但是在 tampermonkey 中无法触发。 修改成 $('.btn-wrap a')[0].click(); 即可。 直接模拟点击比修改属性好在哪里 例如,勾选一个 checkbox 勾选框,可以这样做 $($('input[name=qa]')[0]).prop('checked', true); 但是,如果目标网站是用的 vuejs 之类的,在 input 上绑定了各 ...
2018-10-14 · 阅读 8844
现象 页面 A: https://www.sunzhongwei.com/#/coding 页面 B: https://www.sunzhongwei.com/#/sleeping 页面 B 的内嵌 iframe 页面 C: https://www.sunzhongwei.com/dreaming 对页面 C 做了 tamermonkey 规则,即跳转到页面 A: window.top.location.href = 'https://www.sunzhongwei.com/#/coding'; 但是跳转之后,页面 A 对应 tampermonkey 逻辑并没有执行 if (window ...
2021-05-04 · 阅读 8102 · 字数 81
正确的做法 window.top.location.href = 'https://www.sunzhongwei.com'; 错误的做法 window.location.href = 'https://www.sunzhongwei.com'; 这样只会修改 iframe 的页面内容,而其宿主页面并不会改变。 查看页面 frame 层级 Chrome - Application - Frames ...
2018-09-15 · 阅读 7937
例如,我要遍历一个 list,若其中一行包含某个状态,则跳转到下一页。 实现方法是在修改 window.location.href 之后,抛出个异常,即可终止当前 tampermonkey 脚本。 $('li').each(function (index, item) { var url = base_url + $(item).attr('href'); var spans = $(item).find('something2'); if ($(spans[2]).text().trim() != '三个广告牌') { GM_log(url); ...
2018-11-24 · 阅读 14694
获取页面 cookie 的方法 function getCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c ...
2018-10-12 · 阅读 20817
原页面中已引入 jQuery, 但是 tampermonkey 编辑器中总是提示 $ is not defined 虽然不影响实际运行,但是看上去非常不爽。 在代码头部插入 var $ = unsafeWindow.jQuery; 即可解决。 另一种情况,确实是没有引入 jQuery 例如, unsafeWindow.jQuery 也是 null,说明页面并没有引入 jQuery。 这时就需要在 tampermonkey 中指定引入 jQuery。例如: // @require https://cdn.staticfile.org/jquery/3.3.1/jquery.min ...
2018-09-13 · 阅读 12147
由于新建的 Tampermonkey 脚本,默认设置了 // @grant none 所以,调用 GM_log('Hello World!');会报错 GM_log is not defined 两种解决方法: 增加 // @grant GM_log 去掉 grant none 这行配置。TM 会自动判断脚本中需要使用那些函数。 我虽然倾向于使用第二种方式,因为省事。但是实际使用中发现,这种方式经常报错。。。逼得我只能使用第一种方式。。。 ...
生活 | 跑步 清单 足球 鲁班 探索 孤独的美食家 驾驶 电视剧 收纳 奶爸 健康 game 电影 周末 joke |
---|---|
Geek | 健身 Laravel Git Vim MySQL Linux UI Windows SVN 纪录片 管理 Shell 游记 工具 手机 BackboneJS 自建博客 Mac DNS Tornado CDN Django Python AngularJS 理财 前端 Nginx 爬虫 Redis Javascript Browser 浏览器 推广 OAuth CSS PHP Social Networks 安全 运维 创业 杂记 VueJS Android Image IDE Java ReactJS 数据分析 SQLite RESTful 读书笔记 家电 ecshop Vagrant wordpress docker SEO GTD magento mongodb nodejs weex 冷知识 ruby iOS 微信小程序 AI CMS 快应用 backpack 广告联盟 OA 短信 UWP Win CSharp Tampermonkey graphviz 钉钉 WPS 数据字典 微信公众号 Fuchsia Adobe XD SQL Server thinkphp 代码规范 商业模式 Flutter 头痛的问题 serverless 视频制作 国际化 golang 服务器 Kotlin 网站建设 5G 笔记本 图片 spark spring 物联网 InfluxDB 图像识别 postgre rust |
成长的烦恼 | 闲言碎语 待产 不睡觉 写作 程序员 孙心然语录 原则 大鸿语录 |
地球 | 植物 时间 中文 赚钱 国家地理 烟台 一生伏首拜阳明 emoji 弟子规 英文 国际贸易 |