如何保留javascript变量,即使我重新加载或重定向到任何其他页面

how to retain javascript variables even if I reload or redirected to any other page

本文关键字:重定向 加载 任何 其他 新加载 javascript 保留 何保留 变量      更新时间:2023-09-26

我创建了一个图像滑块。这个滑块出现在我网站的每一页上。有一个与图像滑块中的每个图像相关联的单击事件。在点击任何图像时,都会有一些变量存储与该图像相关的数据(比如艺术家姓名等,这些字段是隐藏的)。

点击任何图片后,页面会被重定向到另一个页面,比如艺术家页面。在艺术家页面中显示存储的数据。图像滑块也出现在艺术家页面中。

现在,问题是当我进入艺术家页面时,变量不会显示,因为js文件再次重新加载,所有数据都丢失了。两个页面的Javascript文件是相同的。事实上,我的网站中的所有页面都将使用相同的js文件。但是,在艺术家页面上,如果我点击任何图像,数据就会显示出来。我希望数据必须保留和显示,即使它被重定向到艺术家页面。

我尝试过ready()事件,但没有任何帮助。怎么做?

附言:该网站是使用Drupal 7 创建的

我假设您的数据不是在服务器端处理的。JavaScript变量数据不会在每次访问页面时都保持不变。每一页都是崭新的开始。

你应该用饼干做这个。jQuery也有cookie插件,但我还没有尝试过(试着问谷歌)。另一种方法是使用HTML5Web存储,但请注意,它是HTML5,这是一个非常新的功能。

基本上你想要做的是:

  1. 单击项目
  2. 将数据存储在cookie中
  3. 转到下一页
  4. 读取cookie中的数据
  5. 显示器

您不能直接使用。Javascript状态在每次页面加载时都会被清除。

选择包括:

  1. 与其重新加载整个页面,不如看看是否可以使用AJAX-y来替换内容
  2. 使用会话cookie来保持状态
  3. 如果浏览器支持,请使用HTML 5本地存储

有很多方法可以实现这一点,但是,在您的情况下,最简单的方法之一可能是简单地重新检索数据。第一个页面如何检索变量?您是否使用Drupal的模板引擎将它们传递给客户端?它是否通过AJAX获取原始javascript数据?

如果前者是真的,那么您可能需要修改Drupal中的模板呈现挂钩,以与第一个页面相同的方式获取数据,并将它们传递到新页面中。

如果后者是真的,只需使用jQuery的onReady重新查询数据,如您所述。您可能仍然需要使用Drupal模块将数据作为Web服务公开,以便jQuery获取,或者您可以编写自己的php页面/Drupal模块,使用Drupal的数据库抽象手动从数据库中获取数据。