我需要在WebView中突出显示某些文本段。到目前为止,我一直在使用[webView stringByEvaluatingJavaScriptFromString:jscript]将javascript注入webview。 javascript在文本中添加了一个标记,我将背景颜色更改为黄色。这通常有效,但有时我会在插入标签时破坏html。我宁愿在WebView上使用 - (void)changeAttributes:(id)sender方法,据我所知,这将以不会破坏底层html的方式应用该样式。要做到这一点,我先打电话
[webView searchFor:aString direction:YES caseSensitive:NO wrap:YES];
在webview中设置选择。然后我打电话给
[webView changeAttributes:self];
当我将此消息发送到我的WebView实例时,它会调用此方法:
- (NSDictionary *)convertAttributes:(NSDictionary *)attributes {
NSMutableDictionary *newAttrs = [[NSMutableDictionary alloc] initWithDictionary:attributes];
NSColor *background = [NSColor yellowColor];
[newAttrs setValue:background forKey:NSBackgroundColorAttributeName];
return newAttrs;
}
哪个应该将所选文本的背景颜色更改为黄色,但不会。标准Cocoa文本属性是否适用于webview?这种方法是用于此目的,还是应该返回到javascript?
答案 0 :(得分:0)
这些属性是NSFonts
的属性。如this document中所述,事件的顺序通常如下:
[text/webView changeAttributes:obj]
已执行。通常由obj
本身完成。text/webView
使用obj
将字体属性传递给[obj convertAttributes:...]
。obj
会根据需要返回属性。text/webView
相应地设置字体属性。无论如何,我不会推荐这种方法。我假设你是在OS X上,而不是在iOS上。然后,我建议您使用WebFrame
的{{3}}获取DOM元素并直接设置样式。