0

我正在开发一个 HTA 应用程序。我想使用 JavaScript 在多个页面之间存储(临时)表单数据。我通常会设置一个 PHP 网络服务器,但公司政策不允许网络上的网络服务器。

所以我需要用 JScript 或其他方式传递数据。

它需要在 XP 和 7 上使用 IE6+。

我研究了 HTML5 存储,它在 IE6、IE7 中不起作用。

感谢您提供的信息,但有没有其他方法可以在没有网络服务器的情况下在两个页面之间传递数据?

4

5 回答 5

6

嗨,为什么不将值存储在 html5 存储对象中,例如 sessionStorage/localStorage,请访问Html5 存储文档以获取更多详细信息。使用它,您可以在本地临时/永久存储中间值,然后访问您的值以存储会话的值

sessionStorage.getItem('label')
sessionStorage.setItem('value', 'label')

或使用永久存储值

localStorage.getItem('label')
localStorage.setItem('value', 'label')

因此,您可以使用 html5 存储对象在多个页面之间存储(临时)表单数据

于 2012-06-27T16:55:52.563 回答
1

您可以使用名为FileSystemObject. fso至少适用于 IE>=5。下面的代码显示了fso.

ActiveXObject 定义:

var fso=new ActiveXObject('Scripting.FileSystemObject');

读取文件:

var iStream=fso.OpenTextFile('filePath',1,false);
iStream.ReadAll();
/* or looped iStream.ReadLine() */
iStream.Close();

写入文件:

var oStream=fso.OpenTextFile('filePath',2,true);
oStream.WriteLine(/*your_data*/);// This usually is looped according to your data
oStream.Close();

删除文件:

fso.DeleteFile('filePath'[,read-only]);

可选read-only参数也允许您删除只读文件(如果true),默认情况下此参数是false.

MSDN 中的 FileSystemObject

顺便说一句,HTA 支持 HTML5 和 IE9(以及 IE9 本身),当包含<!DOCTYPE html><meta http-equiv="x-ua-compatible" content="ie=9">文档中时。

于 2012-06-28T04:57:30.993 回答
1

如果您只是提交表单并且需要在下一页(表单属性中的页面)上获取其值,您可以使用下一页上的 URLaction提交数据并从中读取数据。GET

当您提交表单时,URL 将类似于

http://mysite.com/submit.html?input1=foo&input2=bar

您可以使用以下JS 函数读取参数。

function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

现在,如果不是这种情况,并且您需要它跨越多个页面,我会选择sessionStoragelocalStorage按照 NejiHyuga 的建议。

于 2012-06-27T22:39:32.923 回答
0

NeijiHyuga 回答了这个问题,但如果你想查看的话,我确实在 GitHub 上为此目的构建了一个插件。

您可以使用会话或本地存储。

https://github.com/sebringj/jquery.dumbformstate

HTA,哇。那是一个有趣的雇主,你在那里。

于 2012-06-27T16:58:41.787 回答
0

JavaScript 在客户端执行。因此,您可以在客户端将数据保存在 Cookie 或类似的东西中,并在必要时将其发送到服务器。或者您将信息隐藏在表单变量中,我认为您需要服务器端的脚本来处理数据。

于 2012-06-27T16:56:20.767 回答