Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.12.2020, 11:33
Новичок на форуме
Отправить личное сообщение для Arifureta Посмотреть профиль Найти все сообщения от Arifureta
 
Регистрация: 14.12.2020
Сообщений: 2

Скрипт работает только в 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";
}
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2020, 12:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

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

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

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 14.12.2020, 12:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от Arifureta
С чем это может быть связанно?
document.cookie, нужно использовать сервер для запуска страницы.
Сообщение от Arifureta
Если есть какие либо решения
localstorage
Ответить с цитированием
  #4 (permalink)  
Старый 14.12.2020, 12:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

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>
Ответить с цитированием
  #5 (permalink)  
Старый 14.12.2020, 14:04
Новичок на форуме
Отправить личное сообщение для Arifureta Посмотреть профиль Найти все сообщения от Arifureta
 
Регистрация: 14.12.2020
Сообщений: 2

Спасибо огромное Вам
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт не работает только в IE10, 11. Alessio18911 Internet Explorer 6 07.03.2018 12:56
Скрипт перестал работать в новых версиях firefox, Opera и Chrome, а в IE работает polbear Javascript под браузер 3 30.06.2011 09:34
Скрипт работает только в опере:( Angel_33_3 Javascript под браузер 10 21.12.2009 15:58
Скрипт работает только в IE xstp Общие вопросы Javascript 3 13.09.2009 15:22
Скрипт не работает в Opera, Firefox Faster Events/DOM/Window 2 08.08.2008 18:56