2

我在网上搜索过,但给定的解决方案不符合我的需求。所以我有一个 webview,我的 webview 加载如下数据:

NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[_webView loadHTMLString:htmString baseURL:baseURL];

该html字符串具有带href的锚标记,例如- <a href=http://url.com/ ... />,我在shouldStartLoadWithRequest上触发了一些事件。

现在的问题是我不知道如何在按下此属性时删除灰色选择。我看到人们这样做:

<a href=http://yourlink.com/ style = "-webkit-tap-highlight-color:rgba(0,0,0,0);">

和一些类似的事情,但我想以其他方式做。通过其他方式,我说我不想更改我的 htmlString,因为它可能有很多,并且在每一个中注入样式似乎不是完美的解决方案..

所以我试着这样做:

[_webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTapHighlightColor = \"rgba(0,0,0,0);\""];

在我加载 html 字符串后,但它不起作用。

所以有人有一些建议,或者知道我做错了什么?

编辑: 或者可能为我想要的行为简单地注入 javascrypt?

提前致谢!!!

4

1 回答 1

5

这段代码应该可以解决问题:

- (void)webViewDidFinishLoad:(UIWebView *)webView

    NSString *js = @"var styleNode = document.createElement('style');\n"
                    "styleNode.type = 'text/css';\n"
                    "var styleText = document.createTextNode('a {-webkit-tap-highlight-color:rgba(0,0,0,0)}');\n"
                    "styleNode.appendChild(styleText);\n"
                    "document.getElementsByTagName('head')[0].appendChild(styleNode);\n";

    [_webView stringByEvaluatingJavaScriptFromString:js];
}
于 2012-08-07T18:59:17.647 回答