我正在开发一个 OS X 程序,用户在该程序中在 WebView 中进行一些轻量级的 WYSIWYG HTML 编辑。作为使用 Cocoa 和 WebKit 编程的新手,我完全不知道如何从 WebView 中获取选定的文本 - 目的是获取用户选择的内容,在文本周围添加 HTML 代码(如 div 或 span),然后替换选定的带有修改后代码的文本。如何实现?
我目前正在用 MacRuby 编写这个项目,但我也很感谢 Objective-C 程序员的帮助。谢谢!
Apple 建议在此处使用此代码段来检索 WebKit WebView 的 HTML 内容:
[(DOMHTMLElement *)[[[webView mainFrame] DOMDocument] documentElement] outerHTML];
如果您希望将 HTML 解释为纯文本,可以使用:
[(DOMHTMLElement *)[[[webView mainFrame] DOMDocument] documentElement] outerText];
UIWebView 允许您运行任意 JavaScript:
[webview stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"]
你可以要求WebView
's -selectedDOMRange
,你会得到一个DOMRange
对象回来。您可以使用此对象找出选择的内容。DOMRange
与所有 WebKit DOM 对象一样,是标准 W3C DOMRange 对象的 Objective-C 表示,查看DOMRange.h
它支持的方法/属性。
-replaceSelectionWithMarkupString:
然后,您可以使用、-replaceSelectionWithText:
或-replaceSelectionWithNode:
的方法替换当前选择WebView
。