【油猴脚本开发】笔记
本帖最后由 unity韩 于 2021-8-11 21:33 编辑//@match xxxxx http://dsa.dayainfo.com/如果不加*号就是只能适配当前网址 http://dsa.dayainfo.com/ *加了*号可以任意任意一个字符
/ / @grant none 直接运行到前端。unsafeWindow就是运行在一个沙盒环境,去操作尖端的元素。
//@grant unsafeWindow
// @grant GM_addStyle 配合使用,获取GM权限。
//@run-at document -start 可以快速的应用
https://bbs.tampermonkey.net.cn/forum.php?mod=image&aid=950&size=300x300&key=96b3867eb3b15c3c&nocache=yes&type=fixnone脚本样例document.creatElement 可以创建一个元素var butn = document.createElement("button"); 创建一个按钮butn.innerText="修改"; 修改按钮的名字butn.style.background="#757575"; 按钮的背景但n.style.color="#fff"; 按钮的颜色var textvalue = document.createElement("INPUT"); 创建一个可输入的文本框textvalue .setAttribute("type", "text");设置输入元素的type属性:
textvalue.size = "10"; 设置他的大小为20
textvalue.color="#ffff"; 设置他的颜色
butn.onclick=function(){方法当按钮被点击时内容},事件触发
document.getElementsByClassName("class的名字"); 根据类查找,返回一个数组
x.innerText = textvalue.value 改变x的,通过文本值赋值
document.querySelector(".second_nav")通过过滤器查找元素返回第一个类元素,对于类使用.calss.nameid 需要#id
document.querySelectorAll(".second_nav") 通过搜索工具查找元素列表,返回的节点。集合数组,只能通过循环,无法增加个人改查
share.parentElement.append(butn) ,分享); 追加()方法在被选元素的结尾(仍然在内部)插入指定内容。的insertBefore将元素追加到指定对象的前面(是同级关系)
JS中常用追加元素的几种方法:追加,appendTo,之后before,insertAfter,insertBefore,appendChild https://www.cnblogs.com/karajanking/p/7149970.html
GM_addStyle('#s-hotsearch-wrapper{display:none'}通过GM权限,获取id为xx,并用display设置为none不显示。多用于屏蔽广告。
通过父物体的id和要搜索物体的classname来找元素
window.onload=function(){ var oDiv=document.getElementById( '父物体id ' ); var arr=getByClass(oDiv, '物体的classname ' ); alert(arr.length);//弹窗} ;function getByClass(oParent, sClassName){ var res=[]; var aTmp=oParent.getElementsByTagName( ' * ' ); for ( var i= 0 ; i<aTmp.length; i++) { if (aTmp.className.indexOf(sClassName) != -1)
{ res.push(aTmp ); } } 返回资源;}搬自吾爱破解 网站帖子:https://www.52pojie.cn/thread-1492463-1-1.html
#Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者替换一个对象的现有属性,并返回此对象。
#属性里面存的可能是方法也可能是值 值有(setter,getter)两个方法
#Object.defineProperty(obj, prop, descriptor) 返回值 被传递给函数的对象obj
#3个参数1.obj 要定义属性的对象。 2. 要定义或替换的属性的名称或 Symbol3.descriptor 要定义或修改的属性描述符
(function(){
varaaa = "";
Object.defineProperty(document, 'cookie', {
set:function(val){
debugger;
console.log(val)
aaa = val;
return val;
},
get:function(){
return aaa;
}
});
})()
2.hook是有时机
1.在控制台注入的hook,刷新网页就失效了
在网页加载的第一个js的位置下断点,然后再控制台手动注入hook
(有可能在注入有些站点的时候时机会晚一点)
2.利用FD替换响应(时机比较靠前)
FD就是个代{过}{滤}理,让网页数据都从FD过
然后就是拦截 + 注入+放过
哥哥好棒 哥哥nb ggnb! 本帖最后由 cxxjackie 于 2021-8-6 00:12 编辑
在部分版本的油猴插件中移除了对GM_addStyle的支持,出于兼容性考虑,不建议使用。可以自己实现一个addStyle函数,示例:function addStyle(css) {
const style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = css;
document.head.appendChild(style);
}
另外append通常是jquery的方法,在原生js中,append可能存在兼容性问题,建议用appendChild代替append。
cxxjackie 发表于 2021-8-6 00:09
在部分版本的油猴插件中移除了对GM_addStyle的支持,出于兼容性考虑,不建议使用。可以自己实现一个addStyl ...
学习了,我一直以为GM_addStyle都有... 李恒道 发表于 2021-8-6 00:38
学习了,我一直以为GM_addStyle都有...
因为这个方法并不涉及浏览器层面的操作,只是语法糖,没有必要专门做成一个API,不过移除后很多脚本出了问题,好像后面油猴又给加回去了,总之很乱,尽量不要用 ggnb! 楼上就叫专业 ggnb!
页:
[1]
2