1

HTML5 に依存するアプリを作成しています。私の目標は、Javascript 関数を実行して特定の div の内容を「単純に」保存することです。私はどこでも検索してきましたが、私をさらに助けたり、始めたりするのに役立つ良い例を見つけることができないようです. 皆さんが私を正しい方向に向けるのを手伝ってくれることを願っています.

最近、Twitter の Ben Taylor が開始コードをくれました。

NSString *html = [yourWebView stringByEvaluatingJavaScriptFromString:@"document.getElementById('NSSidebar').innerHTML"];
NSLog(@"contents:%@",html);

ログは空を返します。これは、「some-element」div を見つけるための文字列を取得するために WebView が適切にロードされていないことが原因である可能性があります。私の現在のコードは次のようになります。

- (void)applicationDidFinishLaunching:()myWebView {

    NSString* filePath = [[NSBundle mainBundle] pathForResource:@"index"
                                                         ofType:@"html"
                                                    inDirectory:@""];

    NSURL* fileURL = [NSURL fileURLWithPath:filePath];
    NSURLRequest* request = [NSURLRequest requestWithURL:fileURL];
    [[webView mainFrame] loadRequest:request];

    NSString *html = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('NSSidebar'.innerHTML"];
    NSLog(@"contents:%@",html);

}
4

2 に答える 2

0

コードと、同じ ID のメニュー サイド バーを含むインデックス ファイルを使用して、テスト プロジェクトをセットアップしました。

私は同じ結果を得ていました。

次に、apples Webkit Objective -C Programming Guide を見ました

フレームワークwindowScriptObject」を使用して「location.href」を取得する方法の例がいくつかありました

私はそれを getElement.. に適応させましたが、うまくいきました。

    id win = [_webView windowScriptObject];


 NSString *html = [win evaluateWebScript:@"document.getElementById(\"NSSidebar\").innerHTML"];

     NSLog(@"html:\n%@",html);

    NSString *htmlText = [win evaluateWebScript:@"document.getElementById(\"NSSidebar\").innerText"];

    NSLog(@"htmlText:\n %@",htmlText);
于 2013-09-24T12:13:13.007 に答える
0

2つの間違い:

  1. 構文エラーがあります: 閉じ括弧がありません。
  2. .toString()返されたオブジェクトを呼び出す必要があります。

このような:

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('NSSidebar').innerHTML.toString()"];
于 2013-08-07T10:44:45.670 に答える