Javascript 如何注册回调并通过网站刷新将其持久化?

Javascript 如何注册回调并通过网站刷新将其持久化?,javascript,callback,coffeescript,Javascript,Callback,Coffeescript,我试图在程序开始时注册回调方法,然后在web应用程序的整个生命周期中的不同时间调用它。回调工作正常,直到我刷新浏览器,之后我使用的类变量被重置。做这件事的正确方法是什么?现在我做以下几件事- class MyManager @registerCallback : (callback) -> @callback = callback 它的名字叫like- MyManager.registerCallback myMethod 任何帮助都将不胜感激 我知道这个问题由

我试图在程序开始时注册回调方法,然后在web应用程序的整个生命周期中的不同时间调用它。回调工作正常,直到我刷新浏览器,之后我使用的类变量被重置。做这件事的正确方法是什么?现在我做以下几件事-

class MyManager
    @registerCallback : (callback) ->
        @callback = callback
它的名字叫like-

MyManager.registerCallback myMethod

任何帮助都将不胜感激

我知道这个问题由来已久,但我认为这可以帮助某人:

// persist while window is open
sessionStorage.myMethod = (function (msg) { alert(msg) }).toString()

// persist forever (while user keeps browser data)
localStorage.myMethod = (function (msg) { alert(msg) }).toString()
然后按以下方式运行函数:

// execute from sessionStorage
eval("(" + sessionStorage.myMethod + ")('Hello World!')");

// execute from localStorage
eval("(" + localStorage.myMethod + ")('Hello World!')");

相关的您实际上没有全局变量,只有“class”变量
MyManager.callback
。您通常使用cookie(或本地存储)在页面重新加载时保存内容,但我想不出任何合理的方法来以这种方式存储函数。我认为您需要某种附加到onload处理程序的设置阶段来完成这类工作。@muistooshort您是对的。已编辑。为什么要保留回调?它是服务器端还是浏览器应用程序?