【问题标题】:how to make javascript load single time and live across all web pages [closed]如何使javascript加载一次并在所有网页上运行[关闭]
【发布时间】:2020-02-15 07:41:12
【问题描述】:

我正在创建一个 mqtt Web 应用程序,当从服务器发布消息时,我在 mqtt javascript 函数中得到一个 json 数组。

我有一个用户可以订阅的订阅页面(订阅代码在mqtt javascript中),所以一旦用户登录,就有多个页面,用户可以检查每个页面的数据。

但我面临的问题是,当页面被重定向时,它会再次要求订阅用户。

目前我正在母版页上加载该脚本,因此它每次都会在每个页面上加载,并且计时器代码不会执行

【问题讨论】:

  • 如果你想实现这个,你需要实现单页应用。 js 将在每次加载页面时重新执行,方法是从服务器获取新的 html 文件。如果您希望您的 javascript 跨页面存在,您需要更改页面内容而不是加载新页面。
  • 如果它包含在母版页中,那么它也将包含在使用母版页的每个页面中。如果您需要帮助,您需要发布一些代码 - 这可能只是您的 Javascript 中的一个简单错误,但如果没有看到它,我们无法帮助您。
  • 我希望 javascript 在所有页面中都存在。我该怎么做。

标签: javascript c# asp.net web


【解决方案1】:

每次您加载新的完整页面时,都会重新加载脚本并从新页面重新开始。

如果您希望客户端脚本/状态跨页面存在,那么您需要一个单页面应用程序(例如 Angular/Ember 等或自定义脚本)。 SPA 基本上使用 javascript 从服务器手动加载页面片段并将它们集成到当前文档中,同时保持当前脚本上下文。这样可以维护客户端脚本变量/参数。

或者,您可以使用 cookie 或服务器端会话在整个页面加载时保持状态。

【讨论】:

    【解决方案2】:

    如果您只想保存数据并在其他页面中恢复数据,您可以使用其中一种解决方案,例如会话存储或 webSQL 或 window.name ...

    window.name = JSON.tostring(myData);
    

    https://www.w3schools.com/html/html5_webstorage.asp

    但是如果你只想加载一个页面,你可以看看其他框架,比如 Vuejs

    https://forum.vuejs.org/t/independent-vue-2-components-one-instance-or-several/4228

    https://vuejs.org/v2/guide/instance.html

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 2013-08-03
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 2015-12-21
      • 2017-01-20
      相关资源
      最近更新 更多