Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Скрипт работает только в FireFox (https://javascript.ru/forum/css-html/81549-skript-rabotaet-tolko-v-firefox.html)

Arifureta 14.12.2020 11:33

Скрипт работает только в FireFox
 
Добрый день, столкнулся с проблемой, что написанный скрипт корректно работает только в браузере FireFox.
В IE, Chrome не работает.
С чем это может быть связанно?
Если есть какие либо решения подскажите пожалуйста.
Можно исправлять прямо в скрипте представленном ниже.
Если не верно оформлено сообщение, то извините, первый раз обращаюсь.

Содержимое файла 3.html:

<?xml version="1.0" encoding="UTF-8"?>
<!--
Лабораторная работа №3
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Лабораторная работа №3</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta charset="UTF-8" />
</head>
<body onunload = "exit()">
<h1>Лабораторная работа №3</h1>
<div id="msg"></div>
<script src="3.js"></script>
</body>
</html>

Содержимое файла 3.js:

/*
* Лабораторная работа №3.
*/

function getCookie(name)
{
let matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}

var newLoadTime = new Date();

var s = getCookie('visitTime');

var visitTime = s && s !== "NaN"? Number.parseInt(s): 0;

s = getCookie('visitCounter');

var visitCounter = s? Number.parseInt(s): 0;

var msg = document.getElementById("msg");

if(visitCounter && visitTime)
{
var aver = Math.round(visitTime / visitCounter),
min = Math.trunc(aver / 60000),
sec = Math.trunc(aver % 60000 / 1000);
msg.innerHTML = "Среднее время Вашего присутствия на нашей странице "
+ min + " мин. " + sec + " сек.";
}
else msg.innerHTML = "Дорогой пользователь! \n\
Мы рады приветствовать Вас на нашей станице!";


function exit()
{
var newUnloadTime = new Date();
visitTime = visitTime + (newUnloadTime - newLoadTime);
visitCounter = visitCounter + 1;
document.cookie = "visitTime=" + visitTime + "; max-age=180";
document.cookie = "visitCounter="
+ visitCounter + "; max-age=180";
}

рони 14.12.2020 12:10

Arifureta,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

рони 14.12.2020 12:16

Цитата:

Сообщение от Arifureta
С чем это может быть связанно?

document.cookie, нужно использовать сервер для запуска страницы.
Цитата:

Сообщение от Arifureta
Если есть какие либо решения

localstorage

рони 14.12.2020 12:42

Arifureta,
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Лабораторная работа №3</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta charset="UTF-8" />
</head>
<body onunload = "exit()">
<h1>Лабораторная работа №3</h1>
<div id="msg"></div>
<script>
var time = localStorage.visitTime;
time = time ? Number(time) : 0;
var count = localStorage.visitCounter;
count = count ? Number(count) : 0;
var msg = document.getElementById("msg");
if (count && time) {
    var aver = Math.round(time / count),
        min = Math.trunc(aver / 60000),
        sec = Math.trunc(aver % 60000 / 1000);
    msg.innerHTML = `Это Ваше ${count + 1} посещение страницы.<br>
Среднее время Вашего присутствия на нашей странице ${min} мин. ${sec} сек.`;
} else msg.innerHTML = `Дорогой пользователь!<br>
Мы рады приветствовать Вас на нашей станице!`;

function exit() {
    localStorage.visitTime = time + performance.now();
    localStorage.visitCounter = ++count;
}
</script>
</body>
</html>

Arifureta 14.12.2020 14:04

Спасибо огромное Вам


Часовой пояс GMT +3, время: 22:15.