1

WebViewでリンクの画面/NSRect座標を取得する方法を見つけようとしています。NSViewでやりたいのですが、webViewへの道が見つかりません。可能な1つの方法は、WebViewを介してObjective CからJavascriptを使用することですが、それは複雑に見えます。

ここでの私のオプションは何ですか?

これを実行しようとしている理由は、WebViewを使用してWebページの画像を取得し、画像上のリンクのhtmlリンクマップを作成するためです。

4

1 に答える 1

2

これはほぼ完全に機能します。一部のリンクは最終的な画像では適切ではありませんが、それは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;
}
于 2012-05-05T15:34:20.927 に答える