gpt4 book ai didi

javascript - 动态文档对象模型 (DOM) 的后退按钮(历史记录)

转载 作者:行者123 更新时间:2023-12-03 09:16:06 25 4
gpt4 key购买 nike

我正在制作一个与 Cordova/Phonegap 一起使用的小型 Web 应用程序,因此我需要可以在任何 WebView 中实现的解决方案(主要是 Android 和 iOS,但也有一些 BlackBerry OS 10)...

我用 JavaScript 动态更改 DOM,当我尝试返回“上一页”时出现问题,我使用了几种方法,例如:

if (typeof (navigator.app) !== "undefined")
{
navigator.app.backHistory();
}
else
{
window.history.back();
}

此解决方案适用于第一个“页面”,它们随哈希值更改,但在某些时候我不会更改哈希值,而只会更改 DOM,然后通过单击后退按钮,它会远远落后。

另一件事是,我尝试使用jquery clone();克隆“上一页”,但是这样,我只能后退一步,我需要一些东西来保留所有内容(历史记录)内存中。

你建议我做什么?有没有不严格使用 HTML5 的插件? (因为较旧的 WebVies Android 和 iOS 不支持某些功能)。

感谢您的阅读,请原谅我糟糕的英语。

最佳答案

使用 jQuery 的 clone() 并将结果推送到数组中也许是您可以使用的解决方案。当用户“导航”您的应用程序时,您将捕获作为“页面”父级的特定 DOM 节点,并在整个应用程序中保持静态。

 <html>
<head>
<title>Your App</title>
<script></script>
</head>
<body>
<header>Your header here</header>
<div id='container'>
<-- the content you want to save in history here -->
</div>
<footer>Your footer here</footer>

使用像这样的简单脚本:

  var navHistory = []

function appHistory(){
var cloned = $('#container').clone();
navHistory.push(cloned);
}

每当用户在您的应用中“导航”时,您都可以调用 appHistory 函数,将相关 DOM 元素复制并推送到 navHistory 数组中。

要检索“页面”内容,只需访问相关数组条目并删除/替换父容器的当前子容器即可:

 function navBackOne(){
//assuming you write the contents of the last page only when you
//navigate away from it...
var i = navHistory.length - 1;
$('#container').children().remove()
$(navHistory[i]).appendTo('#container')
navHistory.pop();
}

关于javascript - 动态文档对象模型 (DOM) 的后退按钮(历史记录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31949226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com