存储临时数据的最佳方式是使用javascript从web应用程序传递到桌面应用程序

Best way to store temp data to pass from web application to desktop application using javascript

本文关键字:应用程序 web javascript 桌面 数据 最佳 方式 存储      更新时间:2023-09-26

我在这里寻找最佳实践。

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

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

使用Javascript。我在考虑用饼干。

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

你们会怎么做?

谢谢你抽出时间。

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

Cookies在这里不是一个好的选择。桌面应用程序不应试图访问浏览器cookie;充其量,它被认为是"行为不端的代码";最坏的情况是,你将无法做到这一点,否则你的应用程序将被检测为恶意软件。即使它被认为是可以的,你也必须为你想要支持的任何浏览器编写cookie读取实现,因为它们在本地存储的方式没有标准。

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

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

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

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

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

这是我写的一个cookie处理程序:

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

使用这个处理程序,你可以将信息存储在cookie中,并可以查看和删除它。然后,使用JSON字符串,你可以向它传递一个对象。

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);

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