【问题标题】:share var between 2 javascript files在 2 个 javascript 文件之间共享 var
【发布时间】:2018-08-28 00:11:06
【问题描述】:

我一直在尝试找到一种方法来在不同 html 文件使用的 js 文件之间共享一个变量(这些 js 文件不在同一个 html 文件中),但我似乎找不到方法......

我想在 a.html 文件中的 a.js 中创建一个用户名变量,然后在将其添加到服务器上的数据库后,转到 b.html 并访问 b.js 中的用户名。 (我已经让所有其他代码工作了)。

我尝试过 session/localStorage 但 Atom(我的文本编辑器)说“未定义 localStorage”,我也尝试使用 emac6 导出/导入/要求,但 Atom 说同样的话:“关键字导出/未定义”。有什么想法吗?

//a.html : -script src="src/a.js"- -/script-

//a.js : var username = "john";

//b.html : -script src="src/b.js"- -/script-

//b.js : console.log(用户名);

【问题讨论】:

    标签: javascript client


    【解决方案1】:

    如果您从一个页面 (a.html) 导航到另一个页面 (b.html),并且希望在您正在使用的两个脚本之间共享/访问数据(即用户名 = 'john')每个页面,那么您可能需要考虑保留该数据以实现此目的。

    有很多方法可以做到这一点,但一种简单的方法是使用localStorage API,如下所示:

    a.html, src/a.js

    var username = "john";
    localStorage.setItem('username', username) // Persists to browser storage
    

    b.html,src/b.js

    var username = localStorage.getItem('username') // Retrieves from browser storage
    console.log(username);
    

    请注意,这取决于顺序 - a.js 必须在 b.js 之前运行才能存储值,然后记录到控制台。

    有关localStorage API, see the MDN docs的更多信息

    【讨论】:

    • 就像我说的,我尝试过本地存储,但由于某种原因,我的 atom 文本编辑器抱怨它无法识别 'localStorage'
    • 如果你在 localStorage 前加上 .window 这样的前缀:window.localStorage,atom 会停止抱怨吗?
    【解决方案2】:

    您还可以使用 cookie 在任意数量的 JavaScript 中传递变量。 从数据创建者设置 cookie:

    document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC";
    

    然后从其他人那里阅读:

    var x = document.cookie;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-21
      • 2011-04-05
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多