是否可以检查是否使用modernizr 启用了cookie?
Posted
技术标签:
【中文标题】是否可以检查是否使用modernizr 启用了cookie?【英文标题】:Is it possible to check if cookies are enabled with modernizr? 【发布时间】:2012-02-26 04:15:39 【问题描述】:我正在研究如何检查浏览器中是否启用了cookies,我找到了很多答案,我什至测试了一些,但在那之后我的一个朋友建议我为此使用Modernizr。 我开始搜索,发现很多与 CSS3 和 HTML5 相关的东西,但我不想要,我只是想知道是否有可能检查 cookies 是否启用Modernizr?
【问题讨论】:
【参考方案1】:查看此网址,希望对您有所帮助:
https://github.com/Modernizr/Modernizr/commit/33f00fbbeb12e92bf24711ea386e722cce6f60cc
【讨论】:
【参考方案2】:以下代码复制自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);
【讨论】:
与此相关,这两种方案中哪一种在性能上会更好? 好吧,上面概述的仅使用 javascript 的方法几乎是轻量级的。 小心这个...navigator.cookieEnabled
在IE9中总是返回true
【参考方案3】:
对这个问题的直接回答是“是的!”它是内置的
示例代码:
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
选项目前在“非核心检测”部分下“隐藏”。
【讨论】:
【参考方案4】: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
?>
【讨论】:
以上是关于是否可以检查是否使用modernizr 启用了cookie?的主要内容,如果未能解决你的问题,请参考以下文章