#javascript #session #cookies #detect
#javascript #сессия #файлы cookie #обнаружение
Вопрос:
Я много искал вокруг и, похоже, не могу найти ничего, что было бы достаточно простым для меня…
Я настроил веб-страницу, которая определяет, какой браузер запущен в данный момент, и если это что-то другое, чем Firefox 4.0, она отображает скрытый div, который выдает предупреждение о том, что страницу лучше всего просматривать в Firefox 4.0 или более поздней версии. Внутри этого div находится кнопка, которая скрывает onclick div.
Я ищу способ запомнить, что эта кнопка была нажата во время сеанса, чтобы, когда пользователь нажимает на мою «домашнюю» страницу, он не получал одно и то же сообщение каждый раз.
Текущий код:
<head>
<script src="js/browsercheck.js"></script>
<script type="text/javascript">
// external script "browsercheck.js" checks
// which browser/version is being used
// check browser and display message if != Firefox 4.0 or >
function checkBrowser() {
var browser = BrowserDetect.browser;
var version = BrowserDetect.version;
if (browser == "Firefox") {
if (version >= 4) {
// do nothing
}
} else {
document.getElementById("coverall").style.visibility="visible";
document.getElementById("browser").innerHTML = browser " " version;
}
}
// remove overlay if user commands
function removeCoverall() {
document.getElementById("coverall").style.visibility="hidden";
}
</script>
</head>
<body>
<div id="coverall" style="visibility:hidden;">
<p>I see you're using <span id="browser"></span>. Please use Firefox.</p>
<button type="button" onclick="removeCoverall()">I understand</button>
</div>
</body>
Комментарии:
1. Вы упоминаете jQuery в названии, но вы вообще не используете jQuery… тогда как этот вопрос связан с jQuery?
2. Не похоже, что вы вообще используете jQuery. Но если это действительно так, взгляните на плагин jquery cookies: плагины. jquery.com/project/Cookie
Ответ №1:
Используя jQuery и плагин cookie, вы можете сделать:
функция removeCoverall() { $.cookie("user_clicked_ok", "true"); document.getElementById("комбинезон").style.visibility="скрытый"; } $(window).ready(функция() { if ($.cookie("user_clicked_ok")=="true") {removeCoverall();} });
Более подробная информация на: http://www.electrictoolbox.com/jquery-cookies /
Комментарии:
1. похоже, это должно сработать, но я очень новичок в JS / jQuery. Я знаю только основы, и по какой-то причине файлы cookie сбивают меня с толку. Вы не могли бы сформулировать это именно так, как это должно быть реализовано? Кажется, я не могу заставить это работать
Ответ №2:
В removeCoverall
функции вы могли бы установить файл cookie, который указывает, что пользователь закрыл div, и в checkBrowser
функции проверить, присутствует ли файл cookie, прежде чем показывать div.
Ответ №3:
You seem to have the right idea, you need cookies! YUM!
JS
function removeCoverall() {
var date = new Date();
date.setTime(date.getTime() (7*24*60*60*1000));// expires in one week
document.cookie = 'skipNotify=1;expires=' date.toGMTString() '; path=/';
document.getElementById("coverall").style.visibility="hidden";
}
Теперь извлечение файлов cookie в javascript может быть затруднено, но вы можете использовать PHP!
PHP
function checkBrowser() {
<?php if(isset($_COOKIE['skipNotify']))echo'return;';?>
var browser = BrowserDetect.browser;
var version = BrowserDetect.version;
if (browser == "Firefox") {
if (version >= 4) {
// do nothing
}
} else {
document.getElementById("coverall").style.visibility="visible";
document.getElementById("browser").innerHTML = browser " " version;
}
}
Приведенный выше код вводит оператор return, если у пользователя есть файл cookie, поэтому вызов функции ничего не сделает.
Как упоминалось в других сообщениях, я настоятельно рекомендую вам использовать jQuery для всех ваших нужд в javascript. Он очень популярен, стабилен и полезен! Я дал свой ответ только потому, что в нем не используется какое-либо стороннее решение.