ZYMKJ 发表于 2022-10-14 14:41:25

关于脚本修改网页原生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>

```

steven026 发表于 2022-10-14 14:41:26

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 14:59:22

本帖最后由 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();
}

ZYMKJ 发表于 2022-10-14 15:08:01

steven026 发表于 2022-10-14 14:59
直接覆写全局函数

方法2不对的。 那个pageNo=11;其中11不是固定数值,应该是从服务器返回的数字。但返回数值的函数尚未找到。如找到直接调用也OK
我咨询这个主要是为了学习油猴脚本的各种编写。
其实就这一个地方需要手动改写,改写一次就OK,不过为了学习才咨询的

笑尘天雨 发表于 2022-10-14 21:55:36

本帖最后由 笑尘天雨 于 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;
```

voeoc 发表于 2022-10-14 22:41:00

无脑用eval,直接覆盖掉
eval(customTag_TurnToPage.toString().replace("pageNo=11;","pageNo=11;someting..."));
页: [1]
查看完整版本: 关于脚本修改网页原生JS函数的求助