Cocoa中的Webkit页面缩放

3
我正在为Mac制作一个基于WebKit的文本编辑器应用程序,我需要找到一种方法来缩放文档。我在StackOverflow上看到了这篇文章here,它建议只是缩放Webkit渲染的视图。问题是,由于Webkit并不知道缩放,因此会破坏拖放等功能,并导致Javascript报告错误的光标位置。不幸的是,由于某些原因,Cocoa WebKit API仅支持放大或缩小文本,而不是整个页面。Safari和Chrome都能够正确地执行此操作。我甚至查看了Chromium源代码以了解其如何实现,但不幸的是,它正在使用完全不同的跨平台API。如果我可以安全地使用它们,我并不反对使用私有API。如有建议,请多多指教。-Keaton

WebKit.framework 也是开源的,不难深入挖掘并找到这个盗版 API。 - Mike Abdullah
1个回答

4

目前这些API还不是公开的,但它们已经存在多年,不太可能改变。你可以在WebKit的WebViewPrivate.h头文件中找到它们。你的系统中找不到该头文件,因此你需要在类别中重新声明这些方法。例如:

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

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


1
[_webview stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.zoom = "0.5""]; 是最佳解决方案。 - Altimac
如果WebView禁用了Javascript,使用stringByEvaluatingJavascript将无法工作。因此,添加一个类别会是一个更好的选择。 - Kaunteya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接