我正在尝试找到一种方法来获取 WebView 中链接的屏幕/NSRect 坐标。我想用 NSView 来做,但我找不到任何通往 webView 的方法。一种可能的方法是通过 WebView 使用来自 Objective C 的 Javascript,但这看起来很复杂。
我在这里有什么选择?
我试图这样做的原因是我想用 WebView 拍摄网页的图像,并为图像上的链接创建一个 html 链接映射。
我正在尝试找到一种方法来获取 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;
}