您好我正在使用
Javascript开发自己的路由器API.它基于#FregmentIdentifiers(document.location.hash)进行路由.
api完成了almos,但我仍然在做backbuttom事件.每当按下后退按钮并且哈希值发生变化时,之前就会看到,旧内容将被恢复.
您知道如何保存和恢复所有内容吗?
我的问题是,如果我保存并恢复document.body.innerHTML,只会恢复标记,但不会恢复事件,例如googlemaps停止工作.
我试图克隆document.body或document.documentElement,但javascript或者告诉我该字段没有setter或者我的克隆无效.
编辑:
为了明确我正在做的事情,我决定发布我当前的代码.
问题针对标有// TODO评论的部分.
我的api的示例用法可能如下所示:
@H_502_14@config = new PrefixedRouterConfig('show_map',new Array("\\d+","-?\\d+(?:\\.\\d+)?","-?\\d+(?:\\.\\d+)?")); var ROUTE_SHOW_MAP = new Route( function(params){ var zoom = params[0]; var lat = params[1]; var lng = params[2]; MyGmapInterface.preparePage(-1); addTabSelectedCallback(MyGmapInterface.tabLoaded); addTabClosedCallback(MyGmapInterface.tabClosed); MyGmapInterface.tabsLoaded = true; MyGmapInterface.myMap = new MyMap(lat,lng,zoom,MyGmapInterface.getMapContainer(),MyGmapInterface.notCompatible); MyGmapInterface.addNewCamMarkers(MyGmapInterface.loadCams()); MyGmapInterface.initListeners(); tabSelected(TAB_LEFT); },config.getParams,config.getIdentifier,config.contains ); ROUTE_SHOW_MAP.register();在包含所有Javascript文件(可能注册路由)之后,我调用了Router.getInstance().init();
当我在某处做一个存在路径的ajax请求(手动)时,我调用ROUTE_NAME.executed()来设置fregment标识符并将其注册到历史记录中.
此外,我有一个观察者,只要执行()更改位置哈希,就会更新一些用于直接翻译的链接.