Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript静态变量及其在不同页面中的使用_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

Javascript静态变量及其在不同页面中的使用

Javascript静态变量及其在不同页面中的使用,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我的版面页面标题中有一个jQuery插件: <script src="@Url.Content("~/Scripts/js/kendo.web.min.js")"></script> <script src="@Url.Content("~/Scripts/app/jsCommon.js")"></script> <script src="@Url.Content("~/Scripts/app/Layout.js")"></scr

我的版面页面标题中有一个jQuery插件:

<script src="@Url.Content("~/Scripts/js/kendo.web.min.js")"></script>
<script src="@Url.Content("~/Scripts/app/jsCommon.js")"></script>
<script src="@Url.Content("~/Scripts/app/Layout.js")"></script>
另一方面,我有一个共享存储库javascript对象,如下所示:

function common() { 

}

common.currentTarget = null;

var Common = new common();
在另一页中,我触发了如下事件:

<script>
  $(document).ready(function () {
    var layout = $("#layout").data("Layout");
    $(layout).trigger("_loadBackground")
  });
</script>

$(文档).ready(函数(){
var布局=$(“#布局”).数据(“布局”);
$(布局).trigger(“\u loadBackground”)
});

当HButton元素在第一次单击时发生,我正在“Common.currentTarget”中写入对象,并且在观察变量时成功保存,但当另一个页面完全加载,然后触发事件“\u loadBackground”时,“Common.currentTarget”的值已丢失,我的问题是如何定义这样一个静态变量,使其在我的整个页面中永久存在

页面更改或刷新时,所有JavaScript数据都将卸载。JavaScript本身无法解决这个问题。您必须将数据发送到服务器。可能最简单的方法是将数据存储在隐藏字段中:

<input type="hidden" id="storable" />
....
document.getElementById("storable").value = // whatever value you want to store

....
document.getElementById(“可存储”).value=//要存储的任何值
然后在服务器端,您可以将该数据传输到新页面


如果您正在重定向客户端,请改用查询参数。

您可以从javascript设置cookie来存储数据,然后从另一个页面访问cookie。Cookie可以仅在浏览器会话期间持续存在,也可以给它们一个过期时间。对于HTML5,有。

您希望在更改页面后保持填充变量吗?如果是这样的话,您必须将其放入某种存储中。但是像在名称空间中定义静态变量这样的OOP javascript如何?这是否可能?我喜欢将其作为一种设计模式来实现。@kamiar3001不,若你们有兴趣,请直接阅读Mozilla的Firefox源代码,你们可以看到每次页面更改时整个DOM都会被卸载。根本没办法。你能做的就是把所有的东西都放在一个页面上,尽管这是一件严肃的事情,我不推荐这样做。无论如何,刷新时您仍然会丢失状态。如果我使用localstorage,是否有任何副作用?我认为它是解决方案(但仅适用于HTML5)?@kamiar3001它被广泛使用和支持。有关兼容性矩阵,请参阅。一些浏览器可能被配置为询问用户页面是否可以存储一些本地数据。会话存储对于您的情况来说可能足够了,而不是持久的本地存储。会话存储只存储文本,但是Jquery对象呢???@kamiar3001您必须将其转换为json字符串。jquery可能有支持它的支持或插件——google-it.JSON.stringify(e.currentTarget)=>它让我感觉像这样:“{\”jQuery1910681751315333444\”:15}”
<input type="hidden" id="storable" />
....
document.getElementById("storable").value = // whatever value you want to store