1

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

我做了一些研究,我对如何完成这个有一个模糊的想法,但我很好奇是否有更好的方法。

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

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

4

1 回答 1

1

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

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

您可以将数据编码成一个 blob 以使其更容易传递。

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

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

于 2012-05-24T20:17:16.490 回答