锚标签-在iphone7 / 6s plus上的mousedown上未获取日志

时间:2018-08-27 04:41:06

标签: javascript iphone reactjs

我正在尝试在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中没有保存日志。

请对此提出任何建议。

1 个答案:

答案 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)
  });
}
});