Javascript 在文档之间移动整个html页面上下文
有没有一种方法可以将整个dom javascript状态、文档状态以及从一个文档到另一个文档的所有内容移动 我的第一个想法是使用iframe,但显然,如果不重新加载iframe,就无法在dom中移动iframe 我的第二个想法是对window对象进行深度复制,但显然这很耗时,有很多陷阱,并且不能处理dom状态 有可能这样做吗?我基本上希望对一个文档进行沙箱处理,然后将其状态移动/复制到另一个文档 仅供参考,这是一个节点webkit应用程序。我想将dom从一个窗口复制到另一个窗口 例如,我可以做: window2.document=window1.document; window2.document.body.innerHtml window1.document.body//我不知道语法Javascript 在文档之间移动整个html页面上下文,javascript,html,dom,iframe,Javascript,Html,Dom,Iframe,有没有一种方法可以将整个dom javascript状态、文档状态以及从一个文档到另一个文档的所有内容移动 我的第一个想法是使用iframe,但显然,如果不重新加载iframe,就无法在dom中移动iframe 我的第二个想法是对window对象进行深度复制,但显然这很耗时,有很多陷阱,并且不能处理dom状态 有可能这样做吗?我基本上希望对一个文档进行沙箱处理,然后将其状态移动/复制到另一个文档 仅供参考,这是一个节点webkit应用程序。我想将dom从一个窗口复制到另一个窗口 例如,我可以做:
不,HTTP是一种无状态协议,因此在HTML文档之间移动状态没有多大意义
我建议使用单页应用程序。让单个HTML文档处理状态。然后发出AJAX请求,根据需要部分更新数据。您可以将整个页面作为json存储在cookie中。如果页面太大,可能需要使用多个cookie。然后在下一个文档中加载页面nad您需要的任何值。这里有一些我以前使用过的javascript。它将循环遍历表单中的每个元素,并将其保存为json格式的cookie,格式为controlId:controlValue
function SaveFormInCookies(formId) {
var saveToCookies = {};
$('#' + formId + ' :input').each(function () {
if ($(this).is(':visible')) { // Only save visible form items
if (($(this).val().length > 0) && ($(this).is(':input[type="submit"]') == false)) {
saveToCookies[$(this).attr('id')] = $(this).attr('value');
}
}
});
var elementsToSave = JSON.stringify(saveToCookies); // Convert object array of controls and values into a json string
var splitForm = elementsToSave.match(/.{1,3000}/g); // Make sure each cookie only hold up 3000 characters. Leave plenty of overhead as cookie size varies depending on browser
for (var i = 0; i < splitForm.length; i++) {
setCookie("MGIncForm" + i, splitForm[i], 1); // Save as many cookies as needed
}
}
/*
This function is resposible for actually saving the cookies
*/
function setCookie(cookieName, value, expireHours) {
var exdate = new Date().addHours(expireHours);
var cookieValue = escape(value) + ((expireHours == null) ? "" : "; expires=" + exdate.toUTCString());
document.cookie = cookieName + "=" + cookieValue;
}
在下一页上,检查cookie是否存在并反序列化它 你能看看我的编辑吗?这是最后4行。我曾考虑过将整个状态存储在localStorage或类似的东西中,但我更希望能够复制所有内容,这样我就不必担心表单数据被部分填充之类的事情;我希望当我复制/移动文档时,它仍然会有滚动位置等内容。这就是为什么移动iframe是理想的,因为它是沙盒的,所有状态javascript和dom也是自包含的。可悲的是,我不认为序列化整个window对象对我正在尝试的工作有用。感谢您的回答。您可以将滚动位置和其他任何内容存储为变量,并将其移动到Cookie中的下一页?我的意思是,你必须确切地知道你设置了什么,想要保留什么,然后在另一页上再次设置值以匹配。对。我希望有一个更优雅的解决方案。我会试试看。刚刚找到另一篇关于同样的帖子——可能也会有帮助。有人链接的Lawnchair插件看起来很有前途!我我想你刚刚回到了这个问题:P