我正在尝试在mywebsite上记录一些事件。我在文档上添加了mousedown侦听器,并获得了单击任何元素的事件。 每当单击任何元素时,我都会在服务器上发出请求。 它在桌面浏览器和android手机上也能正常工作。 但是在iphone / safari中,锚标记的事件正在捕获,但是在请求发送到服务器之前,它正在导航到另一个页面。而且我的日志没有保存在服务器上。
我这样添加了列表器:
window.addEventListener("mousedown", function(e) {
console.log("mouse donwn called>>")
var { value, innerHTML, type, tagName, } = e.target || {};
var params = {value,innerHTML, type,tagName};
fetch("http://127.0.0.1:6360/log-tracking", {
method: "POST",
headers: {
"Content-type": "application/json",
Accept: "application/json"
},
body: JSON.stringify(params)
});
});
我的服务器是:
app.all("/log-tracking", async (req, resp) => {
console.log("server called>>>>>>>>");
});
但是对于定位标记,iphone6s / 7中没有保存日志。
请对此提出任何建议。
答案 0 :(得分:-1)
当您在Windows上发生鼠标按下事件时,因此,在此我提出一个条件,即如果锚标记上有事件,则该事件将阻止重定向(默认情况下阻止重定向),并确保日志成功提交。从日志文件获得响应后。它将页面重定向到目标URL。
window.addEventListener("mousedown", function(e) {
if(e.target.tagName.toLowerCase() === 'a')
{
e.preventDefault();
var url = e.target.href; //this is the url where the anchor tag points to.
var { value, innerHTML, type, tagName, } = e.target || {};
var params = {value,innerHTML, type,tagName};
fetch("http://127.0.0.1:6360/log-tracking", {
method: "POST",
headers: {
"Content-type": "application/json",
Accept: "application/json"
},
body: JSON.stringify(params)
}).then(function(response) {
window.location=url;
});
}
else
{
console.log("mouse donwn called>>")
var { value, innerHTML, type, tagName, } = e.target || {};
var params = {value,innerHTML, type,tagName};
fetch("http://127.0.0.1:6360/log-tracking", {
method: "POST",
headers: {
"Content-type": "application/json",
Accept: "application/json"
},
body: JSON.stringify(params)
});
}
});