3

我正在为 Mac 制作一个基于 WebKit 的文本编辑器应用程序,我需要找到一种方法来放大和缩小文档。

我在这里看到了这篇 StackOverflow 文章,它建议只是缩放 Webkit 渲染到的视图。问题是,由于 Webkit 不知道它,这会破坏拖放等操作,并导致 Javascript 报告错误的光标位置。不幸的是,出于某种原因,Cocoa WebKit API 只支持放大或缩小文本,而不支持整个页面。

Safari 和 Chrome 都能够正确执行此操作。我已经浏览了 Chromium 源代码以了解它是如何完成的,但不幸的是它使用了完全不同的跨平台 API。

任何建议将不胜感激。如果我能弄清楚如何以安全的方式使用它们,我并不反对使用私有 API。

-基顿

4

1 回答 1

4

用于执行此操作的 API 目前尚未公开,但它们已经存在多年并且不太可能改变。你可以在 WebKit 的WebViewPrivate.hheader中找到它们。您不会在系统上找到该标头,因此您必须自己在类别中重新声明这些方法。就像是:

@interface WebView (Zoom)
- (IBAction)zoomPageIn:(id)sender;
- (IBAction)zoomPageOut:(id)sender;
- (IBAction)resetPageZoom:(id)sender;
@end

另一种选择是在编辑器中为元素设置 CSSzoom属性。html您可以在标记 ( <html style="zoom: 1.5">) 或 JavaScript ( document.documentElement.style.zoom = "1.5") 中执行此操作。这不需要使用任何私有 API。

于 2013-06-13T03:07:19.963 回答