UIWebView写入磁盘方法
问题描述:
我正在使用UIWebView应用程序,并从JavaScript代码中的服务器获取一些信息。我希望将JSON文本写入文档目录中的文件。我的JavaScript文件的开头部分是:UIWebView写入磁盘方法
WW.FS = {
init: function(animation, back, fn) {
var me = window.ww ? ww.fs : null;
if (me != null) {
PL.tellNative('pl:closeMore');
}
if (!me || !back) {
Ext.Ajax.request({
url: WW.getBS(),
method: 'POST',
params: {ajax: true, source: 'Touch', ID: 'INT'},
success: function(response) {
try {
data = JSON.parse(response.responseText); <--- want to write this to the documents directory!!
} catch(e) {
PL.indicatorOff();
return false;
}
我需要以某种方式得到变量“数据”回无论是从我把它叫做JavaScript文件.m文件或将其写入文件的目录,以便我能稍后阅读。有谁知道如何将变量写入磁盘?我一直在寻找一种方法将数据传输到文档目录中,但没有用处。任何帮助将不胜感激。
答
我知道从UIWebView中的JavaScript获取数据返回到本地代码的唯一方法是通过UIWebViewDelegate方法webView:shouldStartLoadWithRequest:navigationType。基本上这个调用允许你过滤在你的UIWebView中进行的URL加载调用。您重写此方法,并在负载继续时返回YES。诀窍是在URL中嵌入一些字符串,使URL无效,并且您知道意味着您正在尝试传递数据。这里有一个例子:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *requestString = [[[request URL] absoluteString] stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
NSArray *requestArray = [requestString componentsSeparatedByString:@":##key_val##"];
if ([requestArray count] > 1)
{
//...do your custom stuff here, all the values sent from javascript are in 'requestArray'
return NO;//abort loading since this is an invalid URL anyway
}
else
{
return YES;
}
}
在JavaScript中添加如下内容:
function sendToApp(_key, _val)
{
var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", _key + ":##key_val##" + _val);
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
}
所以从JavaScript发送数据到本地代码,你做这样的事情:
sendToApp('state', event.data);
也许这可以帮助你[链接](http://mobdevelopment.wordpress.com/2012/07/28/how-to-call-an-objective-c-method-from-javascript/)! – Scar 2013-02-13 17:44:37