Drupal |缓存页面中未缓存的JS cookie/跟踪代码算法
Drupal | Uncached JS cookie/tracking code algorithm in cached pages
我使用"跟踪代码"模块(https://www.drupal.org/project/tracking_code)添加我的跟踪片段。
我将这些代码添加到After <BODY>
中。
我还有我自己的跟踪cookie,它携带userID
。
目标:将userID
设置为每个跟踪代码段
问题:我启用了缓存,所以这些代码片段被缓存。这意味着我不能用PHP解析cookie并设置全局js变量,这些变量在每个代码段中都可以访问。
解决方案:使用javascript解析cookie,所以即使代码被缓存,变量仍然会被更新。
问题:通常的drupal JS,比如:
(function($) {
Drupal.behaviors.user_cookie = {
attach: function (context, settings) {
...
//Im getting some variables from PHP here and using them
}
}
})(jQuery);
执行太迟,这意味着在跟踪代码段中定义的变量不可用。
解决方案:使用以下代码,我可以设置js变量,并且可以从片段访问它们
(function ($, Drupal, window, document, undefined) {
// Is executed on time!
// How to get variables from php here??
})(jQuery, Drupal, this, this.document);
问题:我无法再使用以下代码从PHP获取一些静态变量(可以缓存):
function user_cookie_page_build(&$page) {
drupal_add_js(array('user_cookie' => array('someVariable' => $someValue)), 'setting');
drupal_add_js(drupal_get_path('module', 'user_cookie') . '/js/user_cookie.js');
}
解决方案(解决方案):在head
中执行内联脚本会设置变量,但我不喜欢这种方式。
drupal_add_js( 'Drupal.user_cookie.cookieName = "'
. variable_get('user_cookie_fname') . '";',
array(
'type' => 'inline',
'scope' => 'head',
'weight' => 0
)
);
drupal_add_js(drupal_get_path('module', 'ft_user_cookie') . '/js/ft_user_cookie.js');
如果有人有更好的解决方案(Ajax不是我的解决方案),请告诉我!
我找到了一个解决方案,但它不是一个完美的解决方案:
drupal_add_js( 'Drupal.ft_user_cookie.cookieName = "' .
variable_get('user_cookie_fname') . '";',,
array(
'type' => 'inline',
'scope' => 'head',
'weight' => 0
)
);
在我的脚本之前添加这个
drupal_add_js(drupal_get_path('module', 'ft_user_cookie') . '/js/ft_user_cookie.js');
解决问题。
相关文章:
- 在jquery中为显示/隐藏设置cookie
- 按下按钮时保存cookie
- 如何在从浏览缓存加载页面时执行javascript
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- 缓存谷歌地图数据
- 如何在Analytics.js中始终了解最新的cookie过期时间
- php httponly cookie在浏览器关闭时被删除
- 防止jQuery Mobile中的ajax缓存
- 如何在提交表单时将PHP变量传递到Javascript cookie中
- image.onload事件和浏览器缓存
- Javascript清除缓存以清除基本身份验证凭据
- CORS-服务器端cookie没有保存在chrome浏览器上
- 使用jquery.load('pageName')方法时,未从应用程序缓存加载Html页
- 将脚本缓存到本地存储的basket.js概念仍然是一个好主意吗
- 如何为后台更改程序代码设置cookie
- 如何在没有缓存/cookie的情况下运行/调试Web应用程序项目
- Drupal |缓存页面中未缓存的JS cookie/跟踪代码算法
- 是否有一种方法来清除缓存和cookie使用javascript
- 是否有可能将cookie同意通知与HTML输出缓存结合起来?
- 缓存变量:localStorage或cookie