从Cocoa中的WebView获取源HTML

时间:2010-01-12 02:48:30

标签: cocoa webkit webview macruby

我正在开发一个OS X程序,用户在WebView中进行一些简单的WYSIWYG HTML编辑。作为使用Cocoa和WebKit编程的新手,我完全不知道如何从WebView中获取所选文本 - 目的是获取用户选择的内容,在文本周围添加HTML代码(如div或span),并替换所选带有修改代码的文本。如何实现这一目标?

我目前正在使用MacRuby编写这个项目,但我也非常感谢Objective-C程序员的帮助。谢谢!

3 个答案:

答案 0 :(得分:6)

Apple recommends using this snippet这里检索WebKit WebView的HTML内容:

[(DOMHTMLElement *)[[[webView mainFrame] DOMDocument] documentElement] outerHTML];

如果您希望HTML解释为纯文本,您可以使用:

[(DOMHTMLElement *)[[[webView mainFrame] DOMDocument] documentElement] outerText];

答案 1 :(得分:5)

UIWebView允许您运行任意JavaScript:

[webview stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"]

答案 2 :(得分:3)

您可以要求WebView的{​​{1}},然后您将获得-selectedDOMRange个对象。您可以使用此对象来查找所选内容。与所有WebKit DOM对象一样,DOMRange是标准W3C DOMRange对象的Objective-C表示,请参阅DOMRange了解它支持的方法/属性。

然后,您可以使用DOMRange.h的{​​{1}},-replaceSelectionWithMarkupString:-replaceSelectionWithText:方法替换当前选择。