gpt4 book ai didi

javascript - 如何使用 AngularJS 检测浏览器中是否禁用了 cookie

转载 作者:行者123 更新时间:2023-11-29 19:45:56 25 4
gpt4 key购买 nike

我在我当前的项目中使用 AngularJS,我正在尝试实现一个功能来检测 cookie 是否在浏览器中被禁用。我试图使用 AngularJS 模块“ngCookies”来解决这个问题。此功能的主要思想是创建一些 cookie,然后检查此 cookie 是否已创建(并且可用),如果未创建则显示消息。但它没有用。

Controller :

someProject.controller('CookieCtrl', ['$scope', '$cookieStore', function($scope, $cookieStore) {
$scope.areCookiesEnabled = false;

$cookieStore.put("TestCookie", "TestCookieText");
$scope.cookieValue = $cookieStore.get("TestCookie");

if ($scope.cookieValue) {
$cookieStore.remove("TestCookie");
$scope.areCookiesEnabled = true;
}
}]);

查看:

<div class="main" data-ng-controller="CookieCtrl">
<div class="warning_message" data-ng-show="!areCookiesEnabled">
<span data-ng-bind="areCookiesEnabled"></span>
</div>
</div>

谁能告诉我我的错误在哪里?

最佳答案

检查:

<div class="warning_message" data-ng-show="!areCookiesEnabled">

data-ng-show="!areCookiesEnabled" 评估为 false。因此,如果存在 cookie,您的消息将不会显示。

我做了一个 plunker 来展示这个。 controller代码没问题,去掉ng-show看看,或者把!areCookiesEnabled改成areCookiesEnabled

[编辑]

用$cookieStore创建cookie后,调用方法$window.cookies();

此方法将返回所有创建的 cookie。示例:

Object {__utmnodejs: "0x0ceb506e0755ba20", __utma: "137862001.1755124536.1363704654.1383162104.1383305355.73", __utmb: "137862001.2.10.1383305355", __utmc: "137862001", __utmz: "137862001.1383305355.73.49.utmcsr=stackoverflow.co…s-are-disabled-in-browser-with-angularjs/19719108"…}

如果 cookie 被禁用,将返回一个空对象:

Object {} 

发生这种情况是因为 $cookieStore 缓存了所有创建的 cookie,因此,即使它们不可用,您也会在 $cookie 服务中看到缓存的值。

http://plnkr.co/edit/TiG6Zx5UKrF8BT9lmdId?p=preview

关于javascript - 如何使用 AngularJS 检测浏览器中是否禁用了 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19717209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com