私は iOS でカスタム Web ビューを開発しています。これは、Web ページで特定の要素を選択するときにユーザーに特別なオプションを提供する必要があります。そのため、UIWebview を拡張し、独自のボタンを sharedMenuController に追加しています。表示されているページは、スタイル設定に xsl を使用して xml から構成されているため、特定のタグに余分なデータがあります。
<p data-type="MC"><img src="annotation.png"></p>
画像を選択するとsharedMenuControllerがポップアップし、Actionボタンを押すとimgタグを含むタグを受け取りたい。問題は、window.getSelection().innerHTML.toString() を使用すると空の文字列が返され、window.getSelection().getRangeAt(0).commonAncestorContainer.innerHTML.toString() を使用すると p-tag が返されることです。 html全体。
これは私のクラスです:
@implementation UICustomWebView
+ (void)initialize
{
[super initialize];
UIMenuItem *itemA = [[UIMenuItem alloc] initWithTitle:@"Action" action:@selector(a:)];
[[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObjects:itemA, nil]];
}
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(defineSelection:))
{
return YES;
}
else if (action == @selector(translateSelection:))
{
return YES;
}
else if (action == @selector(copy:))
{
return NO;
}
else if ( action == @selector( a: ) )
{
return YES;
}
return [super canPerformAction:action withSender:sender];
}
-(void) a:(id)sender
{
NSLog(@"a %@", [self stringByEvaluatingJavaScriptFromString:@"window.getSelection().getRangeAt(0).commonAncestorContainer.innerHTML.toString()"]);
}
@end