【问题标题】:jQuery.data support across windows跨窗口的 jQuery.data 支持
【发布时间】:2014-12-16 03:11:53
【问题描述】:

我正在尝试更新一个使用 jQuery.data() 函数来存储信息的网络应用程序。更新涉及重构界面,以便为不同类型的信息提供单独的窗口,而不是在同一页面上仅使用 div。由于某些插件的工作方式,调用它们的代码已被移动到不同的窗口中,以便在需要它们的窗口中运行。但是,这些插件使用的许多回调使用.data() 来查找存储的信息,但是设置.data() 存储的数据的代码在父窗口中,并且似乎没有将数据附加到DOM,它将它存储在附加到窗口的某个位置,因此在子窗口中回调无法再找到他们正在寻找的数据。

使用call(parent, DOMelement.data); 会起作用吗?有没有更整洁的方法来处理这个问题?

提前致谢!

【问题讨论】:

  • 这听起来像是 cookie 的理想用途,而不是 $.data() 函数。
  • 饼干?不适用于现代浏览器
  • Localstorage 也可能在这里工作
  • @epascarello,请详细说明...我在任何地方都使用 $_SESSION cookie。
  • 在内部,jQuery 只使用 get/setAttribute 那么为什么不直接使用它和 POJS 来处理 data-* 属性呢?

标签: javascript jquery html multi-window cross-window-scripting


【解决方案1】:

感谢所有建议。这没有使用 cookie,因为信息不需要存储在当前会话之后。所有的交互都是通过 javascript 完成的,在你最后保存之前没有服务器请求。必须通信的窗口都同时打开,因此call() 建议。我最终使用.prop 代替.data 解决了这个问题,因为语法和功能几乎相同。这直接将数据与相关窗口上的 DOM 关联起来。 $_SESSION 仅在从服务器请求每个页面时才有效。

因此,如果您尝试存储需要多个窗口同时访问或不刷新页面的信息,您可以使用 jQuery .prop() 函数将数据附加到 DOM。 .attr() 也可以工作,但 .prop() 允许您使用 .符号。 .data 函数旨在防止循环引用,但它们将信息存储在某处,这意味着如果不使用 .data 就无法访问它,.data 为每个上下文单独存储信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多