2012-03-19 30 views
2

我正在寻找最佳实践。存储临时数据以使用javascript从Web应用程序传递到桌面应用程序的最佳方法

我需要存储的信息的10个变量,在一定的格式:

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

使用Javascript。我正在考虑使用Cookie。

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

你们会怎么做?

谢谢你的时间。

+0

如果将使用cookie比它可以被认为是“饼干盗窃”,可能会被安全解决方案,如防病毒被描述为有害的行为... – 2012-03-19 15:10:55

+0

我想我可以回答你的问题,但我需要澄清。我揣测“用户”会在网页上输入他的数据。但我不确定你的意思是“MsApplication”。这是另一个网页,还是它在Windows上运行的应用程序。 – 2012-03-19 22:03:23

+0

@HowardSchutzman - 其实它确实是幽默。为了简单,我把MS应用程序。从技术上讲这是一个画架应用程序模拟一个VB应用程序的样子来代表我们的绿色屏幕,漂亮的UI。它可以完成vb桌面应用程序可以完成的大部分工作。 – Havoc783 2012-03-20 13:34:25

回答

-1

您可以将线程/任务添加到MS应用程序中,以监视创建该cookie的目录中的更改。当您检测到符合要求的新文件时,您可以采取措施。这种方法需要使用DirectoryInfo。 您也可以创建应用程序监听的窗口或Web服务,并可以通过Web应用程序以这种方式传递数据。

0

是的,在这种情况下,cookies肯定是一种选择。可通过document全局对象访问Cookie(例如document.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); 
2

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

1

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

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

剪贴板集成虽然有时显得笨重,但可能是一种低成本选择。

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

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

相关问题