2

私はネットを検索しましたが、与えられた解決策は私のニーズに合っていません..だから私はウェブビューを持っていて、私のウェブビューは次のようなデータをロードします:

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を変更したくないと言っています.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 に答える