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

我看过这篇StackOverflow文章here,它建议仅缩放Webkit渲染到的视图。问题是,由于Webkit不知道,这会破坏拖放操作,并使Javascript报告错误的光标位置。不幸的是,由于某种原因,Cocoa WebKit API仅支持上下缩放文本,而不支持整个页面。

Safari和Chrome都能正常执行此操作。我已经深入研究了Chromium源代码以弄清楚它是如何完成的,但是不幸的是,它使用的是完全不同的跨平台API。

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

-基顿

最佳答案

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

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


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

10-05 20:25
查看更多