Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 持久化本地UIWebView值_Javascript_Objective C_Ios_Uiwebview - Fatal编程技术网

Javascript 持久化本地UIWebView值

Javascript 持久化本地UIWebView值,javascript,objective-c,ios,uiwebview,Javascript,Objective C,Ios,Uiwebview,*编辑* 我做了更多的研究,看起来饼干也可能是答案。我想我会在嵌入html的表单中添加一个按钮,该按钮调用一个函数为值创建cookie。然后我可以使用stringByEvaluatingJavaScriptFromString方法通过obj-c访问这个cookie。当然,您会遇到过期问题,表单的多个副本是不允许的,等等。因此,这是功能的折衷。我将继续使用window.location路由,因为我可以将其存储在数据库中,然后用户可以创建同一表单的另一个实例 *编辑* 我做了一些研究,我对如何实现这

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

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

在我正在开发的iPad应用程序上,我在UIWebView中加载了一个html表单的本地副本。表单通过xml提交到服务器端,并在那里进行解析以用于DB存储,但不幸的是,它们相当长。所以我想让用户以当前状态保存表单(可能他们只填写了一半),然后稍后再返回


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

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

但是在一天结束的时候,不管你怎么做,数据都必须来回传递。通过window.location技巧将是最快的,如果操作系统本身没有限制,有什么理由不这样做吗

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

但另一方面,如果你想在应用程序终止时保持设置不变,那么通过文件路由进行操作可能会很有用


您还可以实际提交表单数据,但在使用NSURLProtocol派生类发送表单数据之前,在Objective-C中拦截表单数据。如果NSURLProtocol类知道数据已完成,则可以允许继续提交。但是如果window.location没有大小限制,我看不出这样做有什么意义。

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

但是在一天结束的时候,不管你怎么做,数据都必须来回传递。通过window.location技巧将是最快的,如果操作系统本身没有限制,有什么理由不这样做吗

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

但另一方面,如果你想在应用程序终止时保持设置不变,那么通过文件路由进行操作可能会很有用


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

Ya我已经决定采用window.location黑客路线。这不是一个笨拙的数据量,只是大到足以让人讨厌,但哦,好吧。谢谢你的回答!是的,我已经决定走窗口定位黑客路线。这不是一个笨拙的数据量,只是大到足以让人讨厌,但哦,好吧。谢谢你的回答!评论编辑-另一个应用程序(即不是你的应用程序)可能会全局关闭cookies(听起来很奇怪,不确定这是否是苹果的bug、疏忽或功能)。浏览器会限制Cookie的大小,从而在项目中使用嵌入的html页面禁用uiwebview上的Cookie吗?如果真的发生了,那就太傻了!评论编辑-另一个应用程序(即不是你的应用程序)可能会全局关闭cookies(听起来很奇怪,不确定这是否是苹果的bug、疏忽或功能)。浏览器会限制Cookie的大小,从而在项目中使用嵌入的html页面禁用uiwebview上的Cookie吗?如果真的发生了,那就太傻了!