如何保留html内容历史记录以使按钮工作?

时间:2014-07-11 15:38:08

标签: javascript jquery html jquery-mobile

美好的一天!

我正在构建移动应用。我有index.html"屏幕A"哪个onSubmit调用javascript函数:

$.get(myRemoteURL, function(data) {
document.open();
document.write(data);
document.close();
}, "text");

然后用新内容覆盖页面"屏幕B"从制作Web服务RQ获得。这个内容是jquery移动内容,我在我的Java标签中以编程方式构建了所有" divs"和"页面"移动视图所需的元素。

然后我再创建一个Web服务RQ并再次重复类似的javascript函数调用以替换新的jquery移动内容"屏幕C"使用从该Web服务RQ获得的新数据。

问题:我找不到一种方法来制作"返回"按钮在"屏幕C"正常工作到"屏幕B"。我有点能够从"屏幕B"到"屏幕A"通过使用window.history.go(-2)(window.history.length表示7,但为什么确切-2用于返回index.html我不知道)。

最大的问题是我无法从屏幕C"到"屏幕B"。我试图获取我替换它的内容替换的HTML内容。我尝试使用JSON localStorage来存储"屏幕B"在变量中,我可以替换"屏幕C"存储的内容为"屏幕B"但是没有用。我也有错误

"Exception in thread "http-bio-8080-exec-402" java.lang.OutOfMemoryError: PermGen space" 

当试图存储"屏幕B"的内容时在JSON localStorage中 - 从webservice RQ和移动内容获得的数据在1-2MB范围内。

拜托,有人可以提出一种方法来实施"返回"按钮机制所以我可以从"屏幕C"到"屏幕B"?我应该使用cookies吗?或者有没有办法保留"屏幕B"历史内容?

增加:

根据要求。我添加了关于"屏幕B"的更多信息。到C过渡。在"屏幕B"我有移动页面,程序逻辑可以在"屏幕B"或者使新的Web服务RQ切换到"屏幕C"。我切换到"屏幕C"类似于从index.html到"屏幕B",即我以编程方式在我的标记类中构建GET参数(为#34生成jquery-mobile内容;屏幕B")这些参数然后,我使用Web服务RQ来获取"屏幕C"的数据。在"屏幕B"它是:

<a href="" onClick="switchToScreenC(_hidden_id_value, urlForScreenC)">Select</a>        

我所拥有的_hidden_​​id_value是隐藏的输入字段,用于存储使Web服务RQ获取&#34;屏幕C&#34;所需的值。

然后是我的javascript:

urlForScreenC = urlForScreenC + "?parameter=" + $("#" + _hidden_id_value).val();

$.get(urlForScreenC, function(data) {
document.open();
document.write(data);
document.close();
}, "text");

提前感谢您的协助。

胜者。

2 个答案:

答案 0 :(得分:0)

我想提一下,使用localStorage确实可行。根据docs localStorage允许至少5MB。我使用了来自webservice响应的最大数据测试,并成功存储和检索了数据:

商店:

localStorage.setItem("screenB", document.documentElement.outerHTML);

提取:

function goBackToScreenB()
{
document.open();
document.write(localStorage.getItem("screenB"));
document.close();
}

所以,&#34;屏幕C&#34;调用goBackToScreenB(),这个存储的内容成功显示,好像&#34;返回&#34;按钮被按下了。

我还看了一下来自developermozilla网站的评论员建议的history.pushState(),但是history.pushState()允许的最大内容大小似乎只允许最多640K个字符,他们建议使用localStorage作为替代方案

希望这个解决方案可以帮助其他人作为实施&#34; back&#34;带有大量HTML内容的按钮功能。

谢谢, 胜者。

答案 1 :(得分:0)

试试这个,可能对您有所帮助:

 history.forward();