从 Cocoa 中的 WebView 获取源 HTML

发布于 2024-08-18 01:26:36 字数 249 浏览 4 评论 0原文

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

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

I'm working on a OS X program where the user does some light WYSIWYG HTML editing in a WebView. Being new to programming with Cocoa and WebKit, I have absolutely no idea how to get selected text from a WebView - the intention being to take what the user selected, add HTML code (like div's or span's) around the text, and replace the selected text with the modified code. How can this be accomplished?

I'm currently programming this project with MacRuby, but I'd appreciate help from Objective-C programmers as well. Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

任谁 2024-08-25 01:26:36

Apple 建议在此处使用此代码段来检索 HTML 内容WebKit WebView 的:

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

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

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

Apple recommends using this snippet here to retrieve the HTML content of a WebKit WebView:

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

If you want the HTML interpreted as plain text, you can use:

[(DOMHTMLElement *)[[[webView mainFrame] DOMDocument] documentElement] outerText];
风蛊 2024-08-25 01:26:36

UIWebView 允许您运行任意 JavaScript:

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

UIWebView lets you run arbitrary JavaScript:

[webview stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"]
情何以堪。 2024-08-25 01:26:36

您可以请求 WebView-selectedDOMRange 并且您将获得一个 DOMRange 对象。您可以使用此对象来找出所选择的内容。 DOMRange 与所有 WebKit DOM 对象一样,是标准 W3C DOMRange 对象的 Objective-C 表示形式,请参阅 DOMRange.h 了解它支持的方法/属性。

然后,您可以使用 WebView-replaceSelectionWithMarkupString:、-replaceSelectionWithText:-replaceSelectionWithNode: 方法替换当前选择>。

You can ask for the WebView's -selectedDOMRange and you'll get a DOMRange object back. You can use this object to find out what is selected. DOMRange, like all WebKit DOM objects, is an Objective-C representation of a standard W3C DOMRange object, see DOMRange.h for what methods/properties it supports.

You can then replace the current selection using the -replaceSelectionWithMarkupString:, -replaceSelectionWithText: or -replaceSelectionWithNode: methods of WebView.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文