我需要在购物车中构建一个功能,当某些内容发生变化时(例如,产品被删除),该购物车使用AJAX从服务器检索模板的更新副本.我不能修改服务器端代码,或者首先使购物车工作的JavaScript.(我不知道,但事情就是这样)
我想要做的是每次购物车更新时运行我自己的JavaScript.我想知道是否可以监听AJAX调用,并在每次调用时运行我的代码.
我有一个应用程序可以将此脚本标签添加到商店中。
过去,我使用此脚本的脚本标签来监视客户的购物车活动。当脚本标签检测到 XHR 时,它会将一些数据发送到我的后端。
var oldXHR = window.XMLHttpRequest;
function newXHR() {
console.log('XHR detected!')
var realXHR = new oldXHR();
realXHR.addEventListener(
"load",
function () {
if (realXHR.readyState == 4 && realXHR.status == 200) {
if (realXHR._url === "/cart.js" || realXHR._url === "/cart/change.js") {
// do something....
}
}
},
false
);
return realXHR;
}
window.XMLHttpRequest = newXHR;
Run Code Online (Sandbox Code Playgroud)
但今天我不知道为什么更改购物车和将商品添加到购物车的操作无法再触发 XHR 侦听器。然而,这个脚本标签在我的旧商店中仍然有效。但如果我将其安装到新商店,它不会触发任何内容。我检查脚本标签是否在该新存储中正常运行,但问题是 XHR 侦听器未触发。
有人有一些想法吗?