ajax-hook icon indicating copy to clipboard operation
ajax-hook copied to clipboard

同时使用两个proxy的情况下,只执行了后一个proxy的内容

Open komomoo opened this issue 2 years ago • 9 comments

因为一些原因,页面注入了两段脚本,两段脚本相互独立,都分别打包进了ajax-hook,都使用了proxy方法。 当两段脚本同时使用的时候,表现于,只执行了后一段脚本的proxy内的代码,前一段脚本的proxy内容未执行。 例如,前一段脚本proxy操作写入参数1,后一段脚本proxy操作写入参数2。两段脚本同时使用,只会写入参数2。 怎样才能在这种情况下,两段脚本里的proxy都能执行到呢?表现为同时能写入参数1和2。

komomoo avatar Jun 17 '22 07:06 komomoo

你可以fork一下修改源码的proxyAjax函数,存一下你传入的状态,然后需要增加一个函数,在你的proxy 写入参数2的时候执行一下,告诉脚本我要写入了(路过说两句,仅供参考)

waterbang avatar Jun 20 '22 01:06 waterbang

你可以fork一下修改源码的proxyAjax函数,存一下你传入的状态,然后需要增加一个函数,在你的proxy 写入参数2的时候执行一下,告诉脚本我要写入了(路过说两句,仅供参考)

不行的,两段脚本都是独立维护的,意思是,都是不同的人维护。不能使用侵入式的方式

komomoo avatar Jun 20 '22 02:06 komomoo

那你试试直接把那个闭包保存的方式换成静态变量,每次执行proxy都读一下

waterbang avatar Jun 20 '22 04:06 waterbang

那你试试直接把那个闭包保存的方式换成静态变量,每次执行proxy都读一下

不能侵入式

komomoo avatar Jun 20 '22 04:06 komomoo

那你试试直接把那个闭包保存的方式换成静态变量,每次执行proxy都读一下

不能侵入式

您好,您说的不能入侵式指的是不能自己维护一份定制版的ajax-hook是吗?还是说不能修改你页面的脚本?我上面的意思是自己二次开发一下ajax-hook

waterbang avatar Jun 20 '22 07:06 waterbang

自己 fork 一份来开发到没啥,但为啥内部要做这个限制,是基于什么场景考虑的呢

  // Avoid double hookAjax
  win[realXhr] = win[realXhr] || win.XMLHttpRequest

https://github.com/wendux/ajax-hook/blob/9efea44c8b2bc27b5ec0e8c2e3a2477bdc76dab9/src/xhr-hook.js#L23

ZengTianShengZ avatar Sep 14 '22 08:09 ZengTianShengZ

3.0.1版本支持了多次hook,可以更新下试试

DAHUIAAAAA avatar Jun 20 '23 14:06 DAHUIAAAAA

3.0.1版本支持了多次hook,可以更新下试试

连续使用两次proxy(),还是只执行了后一个proxy的内容,是用法不对吗?有示例吗? 第一次用proxy(),第二次用hook()和两次都用hook()是可以的

DSeaStar avatar Jun 29 '23 06:06 DSeaStar

可以看看:示例

DAHUIAAAAA avatar Jul 01 '23 11:07 DAHUIAAAAA