2011-12-17 9 views
0

私はいくつかのhtmlコードを挿入しようとしているUIWebViewを持っています。私は最初にロードするテンプレートファイルを持っています。次に、IDで要素の内容を変更したいと思います。ここでhtmlをUIWebVeiwに挿入する

webViewDidFinishLoad:で、私のコードです:

NSString *injectDetails = [NSString stringWithFormat: 
         @"document.getElementById('details').innerHTML = \"%@\";", searchResult.details]; 
    [webView stringByEvaluatingJavaScriptFromString:injectDetails]; 

私は引用符をエスケープすることにより、それを試してみましたが、それは動作しませんでした、次のいずれか

NSString *injectDetails = [NSString stringWithFormat: 
         @"document.getElementById('details').innerHTML = \"%@\";", [searchResult.details stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]]; 
    [webView stringByEvaluatingJavaScriptFromString:injectDetails]; 

私は、プレーンテキストを挿入タクシー、そしてそれ働く動作しないhtmlは、もともとは単に[webView loadHTMLString:aDescription baseURL:NULL];を使ってロードした長い文字列です。うまくいきました。

htmlでこの作業を行うには何が必要ですか?

答えて

-1

これを行うには、次のコード行を試してください。

NSString *imagePath = [[NSBundle mainBundle] resourcePath]; 
imagePath = [imagePath stringByReplacingOccurrencesOfString:@"/" withString:@"//"]; 
imagePath = [imagePath stringByReplacingOccurrencesOfString:@" " withString:@"%20"]; 

NSString *HTMLData = @"Hello this is a test<img src="sample.jpg" alt="" width="100" height="100" />"; 

[webView loadHTMLString:HTMLData baseURL:[NSURL URLWithString: [NSString stringWithFormat:@"file:/%@//",imagePath]]]; 

行1 これは、メインバンドルルートフォルダへのパスを取得します。

ライン2 私たちは、「/」のすべてのインスタンスを検索し、「//」

ライン3 同じ契約でそれを交換するスラッシュのUIWebViewで正しく動作するように、二重を削減する必要があるので、空白を探して、それを%20のHTML相当量に置き換えようとしています。

行4 これは、いくつかのサンプルデータをまとめて、UIWebViewから出力しています。 "sample.jpg"ファイルがルートフォルダに置かれているときに、 "images"というフォルダにあった場合は、ソースをダブルスラッシュを忘れないで!

行5 これは私のチュートリアルの例とほとんど同じですが、baseURLをアプリケーションバンドルのルートに設定していますが、絶対パスの代わりにすべてを参照することができます。あなたがこれを行うことができ、上記を使用して

は...ドキュメントのヘッドにスタイルを追加しようとしたとき、私はちょうど同じ問題を抱えていた

+0

私の質問に答えるなら、私は接続が表示されません。 – Jim

+0

あなたはUIWebViewにHTMLを表示しますか?私が間違った方向に行っている場合は教えてください。 –

+0

私はすでにhtmlを持っている既存のuiviewにhtmlを注入するという特定の問題を解決したいと思います。これはdomとjavascriptに関する質問です。 – Jim

0

...すべての問題が発生した場合、私に知らせてください。だから、私は\ ""(スクリプトの\ "のように見える)で二重引用符をすべてエスケープしただけです。以下のコードを参照してください:

関連する問題