我正在 iOS 上开发一个自定义 webview,它应该在选择网页上的某些元素时为用户提供特殊选项,因此我正在扩展 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