Публикация в Thingspeak иногда срабатывает только тогда, когда я пытаюсь опубликовать время, проведенное пользователем на веб-сайте с использованием javascript (jquery и ajax). В моем коде у меня есть кнопка, которая при нажатии запускает ту же функцию, которая запускается, когда пользователь выгружается (закрывает вкладку). Когда я запускаю эту функцию, она отлично работает, и время, проведенное на канале thingpeak, отображается правильно.
У меня Macbook Air 2017 с Chrome. Я пробовал Firefox и Safari, и все они ведут себя одинаково. У меня уже есть сайт, размещенный в сети. У меня есть другой HTTP-запрос, который выполняется в той же функции после проблемного запроса.
веб-сайт находится на https://quackduck.github.io/ полный код на https://github.com/quackduck/quackduck.github.io
код, который я использовал, чтобы найти время, потраченное пользователем:
let startDate = new Date();
let elapsedTime = 0;
let data= 0
const focus = function() {
startDate = new Date();
};
const blur = function() {
const endDate = new Date();
const spentTime = endDate.getTime() - startDate.getTime();
elapsedTime += spentTime;
};
const beforeunload = function() {
const endDate = new Date();
const spentTime = endDate.getTime() - startDate.getTime();
elapsedTime += spentTime;
// elapsedTime contains the time spent on page in milliseconds
};
window.addEventListener('focus', focus);
window.addEventListener('blur', blur);
window.addEventListener('beforeunload', beforeunload);
код, который я использовал для отправки запросов:
function end () {
thingspeak(elapsedTime/1000);
oldvisitor(elapsedTime/1000);
}
function newvisitor(datatosend) {
let data= datatosend;
$.ajax({
url: "https://maker.ifttt.com/trigger/newvisitor/with/key/iY46qstJctzVcVh1IGrAFSlTK5WHuPmakgwERnn-WnW",
type: "POST",
data: {"value1":data},
//complete: function(){alert("Success")}
});
}
function oldvisitor(datatosend) {
let data= datatosend;
$.ajax({
url: "https://maker.ifttt.com/trigger/oldvisitor/with/key/iY46qstJctzVcVh1IGrAFSlTK5WHuPmakgwERnn-WnW",
type: "POST",
data: {"value1":data},
//complete: function(){alert("Success")}
});
}
function thingspeak(datatosend) {
let data= datatosend;
$.ajax({
url: "https://api.thingspeak.com/update?api_key=VVAE3RM6DF2D3L95",
type: "GET",
data: {"field1":data},
//complete: function(){alert("Success")}
});
}
HTML-код:
<body onload="newvisitor()" onunload="end()" onoffline="offline()" ononline="online()">
<button onclick="end()">click</button>
Все, что я хочу - это получать уведомления о пользователе, который просматриваетмой веб-сайт и получать уведомления о том, когда посетитель уходит и как долго он просматривал. все это уже делается, как и ожидалось.
Еще одна вещь, которую я хочу, - иметь запись времени (и, возможно, даже вставить ее на мой сайт!). Большое вам спасибо!