2

Web サイトの要素にデータをプッシュできるネイティブ ios アプリを作成する方法を見つけようとしています。たとえば、Web ページにテキスト フィールドがある場合、スライダー バーを UIWebView の上に配置し、スライダー バーの結果、たとえば 5.0 をテキスト フィールドに配置したいと考えています。私は次のコードでやろうとしています:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{
    NSString *scriptFunction = @"document.getElementById('user_field').value = 'Joe';";
    NSString *result = [webView stringByEvaluatingJavaScriptFromString:scriptFunction];
    NSLog(@"Result: %@", result);
}

「Joe」をコンソールに出力する結果が得られますが、Web ページのテキスト要素は更新されません。

お手伝いありがとう。

4

1 に答える 1

0

これは私にとってはうまくいきました。これを私のHTMLドキュメントで:

<form>
    First name: <input id="input1" type="text" name="fname"><br>
    Last name: <input id="input2" type="text" name="lname"><br>
            <input type="submit" value="Submit">
</form>

そして、UIWebViewDelegate.webViewDidFinishLoad の次の iOS コードを使用します。

NSString    *scriptFunction = @"document.getElementById( 'input1' ).value = 'Joe';";
NSString    *result         = [self stringByEvaluatingJavaScriptFromString:scriptFunction];
NSLog( @"Result: %@", result );

私の UIWebView サブクラスも UIWebViewDelegate を実装しています。

シミュレーターの WebView では、"Joe" が "First name:" フィールドに表示されます。私の最初の試みは、getElementById() で「fname」を使用しました。それがうまくいかなかったとき、私は id="input1" を HTML に追加し、getElementById() で 'input1' に切り替えました。また、「Result: Joe」がコンソールに記録されていることもわかります。

HTML (または他のコード) にあなたのものとは何か違いがありますか?

于 2013-03-03T02:06:06.357 に答える