存储临时数据以使用javascript从Web应用程序传递到桌面应用程序的最佳方法

时间:2012-03-19 14:58:47

标签: javascript cookies salesforce

我在这里寻找最好的做法。

我需要以某种格式存储10个信息变量:

lname: [John]
fname: [Doe]
etc...

使用Javascript。我在考虑使用cookies。

我的方案如下: 用户将在Salesforce.com中,他们会将客户的信息输入记录。然后他们会点击一个按钮获得报价。使用JS的按钮会将Salesforce字段写入临时文件(可能是cookie)。从那里,其他MS应用程序将获取该文件并读入值。

你们会怎么做?

感谢您的时间。

4 个答案:

答案 0 :(得分:2)

一般来说,浏览器不允许您编写文件。为此,您必须使用一种机制来退出安全沙箱,例如签名的Java小程序。

答案 1 :(得分:1)

Cookies不是一个好选择。桌面应用程序不应尝试访问浏览器cookie;充其量,它被认为是“行为不端的代码”;在最坏的情况下,您将无法执行此操作,否则您的应用将被检测为恶意软件。即使它被认为是好的,你也必须为你想要支持的任何浏览器编写cookie读取实现,因为没有关于它们如何在本地存储的标准。

为什么不让桌面应用代表用户访问网络?将SFDC引用请求写入新的SFDC自定义对象,如Quote_Request__c或类似对象,应用程序可以查询用户通过API创建的最新记录。

剪贴板集成虽然有时看起来很笨重,但可能是一种低成本的选择。

如果必须写入某种本地文件,则需要使用Flash或Java,或者让用户本地保存一些下载的文件(如任何正常的浏览器下载)。

另一种选择是将您的桌面应用注册为URL协议处理程序;所以,比方说,myquote:// firstname / lastname / product / price / etc可以从网页浏览器点击启动应用程序并解析“URL”。但是,对于非常长/复杂的数据,可能效果不佳。

答案 2 :(得分:0)

是的,在这种情况下,cookie肯定是一种选择。可以通过document全局对象(例如document.cookie)访问Cookie。它可以包含字符串和到期日期。

这是我写的cookie处理程序:

http://jsfiddle.net/zbaJz/1/

使用此处理程序,您可以将信息存储在cookie中,并且可以查看和删除它。然后,使用JSON stringify,您可以传递一个对象。

var name = {
  'fname': 'John',
  'lname': 'Doe'
};

var jsonText = JSON.stringify(name);
var cookieMonster = new Ovenmitts();
cookieMonster.bakeCookie('name', jsonText);

然后,为了将数据转换回要操作的对象,您可以使用JSON.parse

var cookieInfo = cookieMonster.admireCookie('name');
var revived = JSON.parse(cookieInfo);

答案 3 :(得分:-1)

您可以向MS应用程序添加一个线程/任务,以监视创建cookie时目录中的更改。当您检测到符合要求的新文件时,您可以对其执行操作。您需要使用DirectoryInfo来实现此方法。 您还可以创建应用程序侦听的窗口或Web服务,并可以通过Web应用程序以这种方式传递数据。