【发布时间】:2012-02-26 04:15:39
【问题描述】:
我正在研究如何检查浏览器中是否启用了cookies,我找到了很多答案,我什至测试了一些,但在那之后我的一个朋友建议我为此使用Modernizr。
我开始搜索,发现很多与 CSS3 和 HTML5 相关的东西,但我不想要,我只是想知道是否有可能检查 cookies 是否启用Modernizr?
【问题讨论】:
我正在研究如何检查浏览器中是否启用了cookies,我找到了很多答案,我什至测试了一些,但在那之后我的一个朋友建议我为此使用Modernizr。
我开始搜索,发现很多与 CSS3 和 HTML5 相关的东西,但我不想要,我只是想知道是否有可能检查 cookies 是否启用Modernizr?
【问题讨论】:
【讨论】:
以下代码复制自http://sveinbjorn.org/cookiecheck。
function are_cookies_enabled()
{
var cookieEnabled = (navigator.cookieEnabled) ? true : false;
if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled)
{
document.cookie="testcookie";
cookieEnabled = (document.cookie.indexOf("testcookie") != -1) ? true : false;
}
return (cookieEnabled);
}
【讨论】:
navigator.cookieEnabled在IE9中总是返回true
对这个问题的直接回答是“是的!”它是内置的
示例代码:
if (Modernizr.cookies == false) {
alert('Please enable cookies');
}
else {
// do something with cookies
}
您还可以使用 css 类 .cookies 或 .no-cookies 来显示/隐藏一个面板,告诉用户他们需要启用 cookie。
.cookies #noCookies
{
display: none;
}
<div id='#noCookies'>
This site requires cookies! Please turn them on already!
</div>
(这个 .cookies 类被 Modernizr 添加到 <body> 标签中)。
注意:如果您正在创建 Modernizr 的自定义版本,cookies 选项目前在“非核心检测”部分下“隐藏”。
【讨论】:
PHP 的另一种方式
HTML/PHP:
<?php
session_start();
$_SESSION['cook'] = 1;
echo "<img src=\"cookcheck.php\">";
?>
PHP-cookcheck.php:
<?php
session_start();
if ($_SESSION['cook'] !== 1)
{ $image="/nocookmsg.png"; } # Cookies NOT Enabled
else { $image="/blank.png"; } # Cookies Enabled
$img=imageCreateFromPNG($image); # Create Image
header("Content-type: image/png"); # Send Header
imagePNG($image); # Send Image
?>
【讨论】: