美好的一天!
我正在构建移动应用。我有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");
提前感谢您的协助。
胜者。
答案 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();