Objective C のファイルから読み取った HTML 文字列マークアップを渡し、それをパラメータを取る JavaScript 関数に渡すにはどうすればよいですか?
私の webViewDidFinishLoad では、このように呼び出そうとします
NSString *jsfile = [[NSBundle mainBundle] pathForResource:@"setcontent" ofType:@"js"];
NSString *js = [NSString stringWithContentsOfFile:jsfile encoding:NSUTF8StringEncoding error:&errDes];
[webView stringByEvaluatingJavaScriptFromString:js];
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"showHtml('%@');", filecontent]];
私のJavaScriptファイルには関数がロードされています
function showHtml(param1)
{
alert(param1);
document.getElementById('section1').innerHTML = param1;
}
のような明示的な文字列値を使用してこのコードをテストし@"<p id=\"cid1\"> test </p>"
、要素の内容を設定することで機能します。これを@"<p id='cid1'> test </p>"
id 属性に一重引用符を付けて変更すると、機能しません。後者を機能させるには、目的の C コードで文字列フォーマッタ '%@' を \"%@\" に変更する必要があります。
上記の問題はそれほど深刻ではありませんが、div 要素の #section1 に innerHTML として設定する必要がある複数の html タグを含むリソース ファイルの内容を読み取る場合、どちらの方法でも機能しません。
何らかの方法でコンテンツをエンコードする必要がありますか? stringByEvaluatingJavaScriptFromString メソッドを呼び出す前に? 誰が私に指摘してもらえますか、何が間違っていますか? 誰かがこれを行うより良い方法を知っている場合は、書いてください。
敬具