保留本地 UIWebView 值



*EDIT*我做了更多的研究,看起来饼干也可能是答案。我想我会在嵌入式 html 内的表单中添加一个按钮,该按钮调用一个函数来为值创建 cookie。然后我可以使用stringByEvaluatingJavaScriptFromString方法通过obj-c访问这个cookie。当然,您会遇到过期,不允许多个表单副本等问题。因此,这是功能的权衡。我将坚持使用window.location路由,因为我可以将其存储在数据库中,然后用户可以创建相同表单的另一个实例。*编辑*

做了一些研究,我有一个模糊的想法如何实现这一目标,但我很好奇是否有更好的方法。

有一个 html 表单的本地副本,在我正在开发的这个 iPad 应用程序的 UIWebView 中加载。表单通过 xml 在服务器端提交,并在那里解析用于数据库存储,但不幸的是它们非常冗长。所以我想让用户将表单保存在当前状态(也许他们只填写了一半),然后稍后返回。

的想法是,我将不得不编写一些javascript来解析表单中的单选按钮和复选框,然后将这些数据通过window.location技巧传递给obj-c代码。但这非常冗长,在 JS 和 Obj-C 之间来回传递的字符串会很长。有没有其他方法可以获取这些复选框/单选按钮的值并将它们传递给 obj-c 端以便稍后重新填充?

通过文件怎么样?将设置/数据保存到JS中的文件中,并在Objective-C中访问该文件。但我想你已经想到了这一点。

但归根结底,无论您如何操作,都必须来回传递数据。通过 window.location 技巧来做到这一点将是最快的,如果操作系统本身没有施加任何限制,有什么理由不这样做吗?

可以将数据编码到 Blob 中,以便于传递。

但另一方面,如果您希望在应用终止时保留设置,则通过文件路由执行此操作可能很有用。

此外,您实际上可以提交表单数据,但在使用 NSURLProtocol 派生类发送之前在 Objective-C 中拦截它。 NSURLProtocol 类如果知道数据完整,则可以允许提交继续进行。但是如果 window.location 没有大小限制,我认为这样做没有任何意义。

最新更新