1

我正在创建一个依赖 HTML5 的应用程序,我的目标是“简单地”通过运行 Javascript 函数来保存特定 div 的内容。我一直在到处寻找,我似乎找不到一个很好的例子来帮助我进一步甚至开始。我希望你们能帮助我指出正确的方向。

推特上的 Ben Taylor 最近给了我起始代码。

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

日志返回空。现在可能是因为 webview 没有正确加载,以便让字符串找到“some-element”div。我当前的代码是:

- (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

两个错误:

  1. 您有语法错误:缺少右括号。
  2. 您需要调用.toString()返回的对象。

像这样:

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