我不是Objective-c的英雄所以请在我学习握手的时候陪我。虽然我对Javascript有很好的了解,但Mac OSX开发似乎很难。
我正在创建一个依赖于HTML5的应用程序,我的目标是“简单地”通过运行Javascript函数来保存特定div的内容。我一直在寻找各地,我似乎无法找到一个很好的例子来帮助我进一步甚至开始。我希望你们能帮助我指出正确的方向。
最近,Ben Taylor在twitter上给了我启动代码。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);
}
我希望有人可以帮我指出正确的方向。如果有重复的帖子 - 我道歉并且我将删除该主题。
答案 0 :(得分:0)
两个错误:
.toString()
。像这样:
[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('NSSidebar').innerHTML.toString()"];
答案 1 :(得分:0)
我使用您的代码和一个带有相同ID的菜单侧栏的索引文件设置了一个测试项目。
我得到的结果相同。
然后我看了一下苹果Webkit Objective -C Programming Guide
其中有几个关于如何使用框架获取“location.href”的示例“ windowScriptObject ”
我将它改编为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);