0

私は UIWebView アプリケーションに取り組んでおり、javascript コードでサーバーから情報を取得しています。JSON テキストをドキュメント ディレクトリ内のファイルに書き込みたいと考えています。私のjavascriptファイルの最初の部分は次のとおりです。

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ファイルに変数「データ」を戻すか、ドキュメントディレクトリに書き込んで後で読み取ることができるようにする必要があります。変数をディスクに書き込む方法を知っている人はいますか? ドキュメントディレクトリにデータを保存する方法を探していましたが、役に立ちませんでした。どんな助けでも大歓迎です。

4

1 に答える 1

0

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);
于 2013-02-13T18:06:49.920 に答える