关于脚本修改网页原生JS函数的求助
本帖最后由 ZYMKJ 于 2022-10-14 14:42 编辑网页源代码中有下列函数,本来我是想取出“11”中的数字,然后执行脚本的if语句。后来发现下面紧接着一个翻页函数。11是一个变量,不是固定的数值。至于从哪里传入的暂时还没研究明白。
我现在的想法是:
1、用什么公式从onclick='customTag\_TurnToPage("11")中取出数值11;
2、或者在pageNo=11;后面追加一行自己的if判断语句
```
<li><a href='javascript:;' onclick='customTag_TurnToPage("11");return false;'>尾页</a></li>
<script language='javascript'>
//翻页函数
function customTag_TurnToPage(pageNo){
//页号越界处理
if(pageNo>11) {
pageNo=11;
}
if(pageNo< 1){
pageNo=1;
}
if(pageNo==0) {
pageNo=1;
}
$('#pageNo').attr('value',pageNo);
nextPage();
}
</script>
``` ZYMKJ 发表于 2022-10-14 15:08
方法2不对的。 那个pageNo=11;其中11不是固定数值,应该是从服务器返回的数字。但返回数值的函数尚未找 ...
不固定就直接toString,截取、替换、构造函数
let fuc=customTag_TurnToPage.toString()
fuc=fuc.slice(fuc.search('{')+1,-1)
fuc=fuc.replace("}","//你的代码}")
customTag_TurnToPage=new Function('pageNo',fuc) 本帖最后由 steven026 于 2022-10-14 15:02 编辑
1、用什么公式从onclick='customTag_TurnToPage("11")中取出数值11;
document.querySelector('a').onclick.toString().match(/\d+/)
2、或者在pageNo=11;后面追加一行自己的if判断语句
直接覆写全局函数
function customTag_TurnToPage(pageNo){
//页号越界处理
if(pageNo>11) {
pageNo=11;
//直接在这里写代码
}
if(pageNo< 1){
pageNo=1;
}
if(pageNo==0) {
pageNo=1;
}
$('#pageNo').attr('value',pageNo);
nextPage();
} steven026 发表于 2022-10-14 14:59
直接覆写全局函数
方法2不对的。 那个pageNo=11;其中11不是固定数值,应该是从服务器返回的数字。但返回数值的函数尚未找到。如找到直接调用也OK
我咨询这个主要是为了学习油猴脚本的各种编写。
其实就这一个地方需要手动改写,改写一次就OK,不过为了学习才咨询的 本帖最后由 笑尘天雨 于 2022-10-14 22:00 编辑
1. 获取script标签的textContent
```
const textContent = document.querySelector('script').textContent;
```
2. 正则匹配替换
```
// 匹配关键字段if pageNo >
const target = textContent.replace(/if\(pageNo>\d+\) {((\n|.)+?)}/, (_, $1) => {
// 获取pageNo对应的值
const pageNo = $1.match(/pageNo=(\d+)/);
// 在原来的基础上添加新的代码
return _.replace($1, `${$1}\n;console.log('页码',${pageNo});`)
});
```
3. 将更换之后的代码替换回去
```
document.querySelector('script').textContent = target;
``` 无脑用eval,直接覆盖掉
eval(customTag_TurnToPage.toString().replace("pageNo=11;","pageNo=11;someting..."));
页:
[1]