油猴脚本的使用
简介
油猴实际上是一个加载器,它把用户脚本安插在最开始获取到的HTML文件中,这样浏览器加载网页的时候,也会加载特定的用户脚本,这样我们就能够通过编写用户脚本来修改网页了
JS可以访问的只有Cookie和LocalStorge,本地存储可以通过window.LocalStorage访问
简单的添加按钮操作
HTML5是现行的HTML标准,DOM即文档对象模型,是一用对象表示HTML标签的方法,通过DOM,我们可以简单的修改文档对象的属性,来轻松修改HTML标签的内容
选择这个小箭头,在左侧点击元素的时候,右边就可以显示元素的html和css
https://blog.chrxw.com/archives/2021/02/08/1449.html/comment-page-1 看到了 按回车执行,然后可以看到,网页的标题已经被修改了。可以通过 document.querySelector(“#content > main > div > div > header > h1”).textContent=’xxx’ 修改,如下
下面这是一个追加按钮的操作:
document 也是DOM元素,它代表整个网页,其他DOM元素都是它的子集。
1 |
|
html修改前后的内容参考如下:
1 |
|
获取DOM元素
总结下来就是使用getElementById或者querySelector。querySelector可以填ID或者class名字。
使用ID获取
一些元素有id属性,可以使用getElementById
来获取,比如这个id为_2:
可以document.getElementById('_2').textContent='aaa'
这样修改其值。
根据_id选择也可以这样写
1 |
|
使用css选择器
比如获取标题
1 |
|
根据元素类型选择
因为评论框的类型为textarea
,而且整个网页只有一个textarea
,因此选择器可以直接写成textarea
,代码如下
1 |
|
根据相对关系选择
有的时候,想要操作的元素可能没有独一无二的属性,那么就可以根据相对关系进行选择,这里A和B都是选择器:
A>B
表示在A
的一级子元素中查找B
A B
表示在A
的内部查找B
(查找范围不仅包括子元素,还包括孙元素等)
A+B
表示与A
相邻的B
元素(平级关系,非父子关系)
A.B
,不表示相对关系,它表示类型是A
,class
名是B
的元素,这个要注意。
1 |
|
根据属性名称匹配
[xxx]
选择带有xxx
属性的元素
[xxx=sss]
选择xxx
属性等于sss
的元素
[xxx~=sss]
选择xxx
属性包含sss
的元素(sss
必须是整个单词)
[xxx|=sss]
选择xxx
属性以sss
开头的元素(sss
必须是整个单词)
[xxx^=sss]
选择xxx
属性以sss
开头的元素(sss
可以是单词的一部分)
[xxx$=sss]
选择xxx
属性以sss
结尾的元素(sss
可以是单词的一部分)
[xxx*=sss]
选择xxx
属性包含sss
的元素(sss
可以是单词的一部分)
修改DOM元素
修改文本内容
textContent返回值为当前DOM元素内的显示字符(没有被 < > 包起来的所有字符),不仅包括自身,还包括所有子元素
innerText和textContent两个方法会直接替换掉元素内部的内容,如果元素内部有其他子元素的话,子元素会消失。
修改样式style
下面是一些获取css样式的方法:
DOM.style
,获取DOM元素的内联CSS样式
DOM.style.[css名称]
,获取DOM元素的特定CSS属性,例如textAlign
DOM.style.cssText
,获取DOM元素的内联CSS样式,纯文本格式
下面是设置样式的方法
DOM.style.[css名称] = 'xxx'
,修改DOM元素的特定CSS属性为xxx
DOM.style.cssText = 'aaa: xxx;'
,直接修改DOM元素的内联CSS文本,可以一次设置多个CSS
如果想隐藏某些元素的话,可以把它的CSS的display
属性设置成none
,就会被隐藏起来了
删除对象DOM.remove()
DOM.addEventListener( [事件名称] , [回调函数])
添加事件监听器
DOM.removeEventListener( [事件名称] , [回调函数])
移除事件监听器
模拟鼠标点击:DOM.click()
第一个脚本
'use strict';
是伪代码,它告诉解释器,开启严格模式
document.querySelector('.item-thumb')
代码标识获取class名为item-thumb的元素
打开这个设置可以方便调试脚本
脚本里的一部分如下:
1 |
|
了GM_xmlhttpRequest
,这个东西是一个网络请求器,GM_xmlhttpRequest
类似于xmlHttpRequest
,两者用法几乎一样,只是GM_xmlhttpRequest
不存在跨域的问题
参考
所有参考
https://blog.chrxw.com/archives/2021/02/08/1449.html/comment-page-1