我的布局页面标题中有一个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>
和我的layout.js:
(function ($) {
var Layout = function (node, options) {
this.node = node;
this.options = $.extend({
url: ""
}, options);
$(this.node).find('.HButton').bind('click', $.proxy(this.HButtonClicked, this));
};
Layout.prototype = {
constructor: Layout,
_loadBackground: function () {
debugger;
//load second now 'Common.currentTarget' have been lost
$(Common.currentTarget).removeClass();
$(Common.currentTarget).addClass(".HButton_Selected");
},
HButtonClicked: function (e) {
debugger;
//load first
Common.currentTarget = e.currentTarget;
}
}
$.fn.Layout = function (options) {
return this.each(function () {
$(this).data('Layout', new Layout(this, options));
});
};
}(jQuery));
在另一边我有一个像这样的共享存储库javascript对象:
function common() {
}
common.currentTarget = null;
var Common = new common();
然后在另一页中我触发了如下事件:
<script>
$(document).ready(function () {
var layout = $("#layout").data("Layout");
$(layout).trigger("_loadBackground")
});
</script>
当HButton元素点击发生在第一个我正在“Common.currentTarget”中写入对象时,当我看到变量但是当另一个页面完全加载然后触发事件“_loadBackground”时它保存成功“Common.currentTarget”的值已经丢失,我的问题是我如何定义这样的静态变量在我的整个页面中是永久的?
答案 0 :(得分:1)
您可以从javascript设置cookie来存储数据,然后从另一个页面访问cookie。 Cookie可以在浏览器会话期间保留,也可以让它们过期。对于HTML5,有local storage。
答案 1 :(得分:0)
更改或刷新页面时,将卸载所有JavaScript数据。 JavaScript本身无法解决这个问题。您必须将数据发送到服务器。可能最简单的方法是将数据存储在隐藏字段中:
<input type="hidden" id="storable" />
....
document.getElementById("storable").value = // whatever value you want to store
然后,在服务器端,您可以将该数据传输到新页面。
如果要重定向客户端,请改用查询参数。