gpt4 book ai didi

cocoa - WebView 中链接的 NSRect 坐标

转载 作者:行者123 更新时间:2023-12-03 17:05:15 27 4
gpt4 key购买 nike

我正在尝试找到一种方法来获取 WebView 中链接的屏幕/NSRect 坐标。我想用 NSView 来做,但我找不到任何访问 webView 的方法。一种可能的方法是通过 WebView 使用 Objective C 中的 Javascript,但这看起来很复杂。

我有什么选择?

我尝试这样做的原因是我想使用 WebView 拍摄网页图像并为图像上的链接创建 html 链接映射。

最佳答案

这几乎可以完美地工作。有些链接在最终图像中不合适,但我认为这可能是 DOM 问题?

- (NSString *)constructLinkMap
{
NSMutableString *result = nil;
int i = 0;
int linksCount = 0;

result = [NSMutableString string];
linksCount = [[[[webView mainFrame] DOMDocument] getElementsByTagName:@"a"] length];

[result appendString:@"<map name=\"linkmap\">"];

for (i = 0; i < linksCount; i++) {

id linkItem = [[[[webView mainFrame] DOMDocument] getElementsByTagName:@"a"] item:i];

if (([linkItem text] && ([[linkItem text] length] > 0)) && ([linkItem href] && ([[linkItem href] length] > 0))) {

DOMRange *domRange = [webView selectedDOMRange];
[domRange selectNode:linkItem];
NSRect box = [linkItem boundingBox];

if ((box.size.width > 0) && (box.size.height > 0))
[result appendFormat:@"<area class=\"map\" shape=\"rect\" coords=\"%2.0f,%2.0f,%2.0f,%2.0f\" href=\"%@\" alt=\"%@\" />", box.origin.x, box.origin.y, (box.origin.x + box.size.width), (box.size.height + box.origin.y), [linkItem href], [linkItem text]];

}
}
[result appendString:@"</map>"];

return result;
}

关于cocoa - WebView 中链接的 NSRect 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10452162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com