我在我的android应用程序中使用webview。我想知道是否可以使用JavaScript中完成的代码在加载的页面中突出显示或加下划线的特定单词/句子/段落?Android webview:使用javascript突出显示页面中的特定单词?
感谢
我在我的android应用程序中使用webview。我想知道是否可以使用JavaScript中完成的代码在加载的页面中突出显示或加下划线的特定单词/句子/段落?Android webview:使用javascript突出显示页面中的特定单词?
感谢
你应该看看this page。做一个查看来源。
他们使用纯Javascript(甚至没有jQuery)来突出显示网页上的特定字词。
基本上它们会将想要搜索的所有文本加载到变量中,并不断找到他们想要突出显示的搜索字词indexOf
。当他们找到该术语的索引时,他们会在该索引+ a <span class="highlighted">
+搜索术语+ </span>
之前创建一个新的字符串。然后他们继续寻找。一旦他们搜索并重建了所有文本,它们就会用新文本替换DOM中的旧文本。
他们也有沿的.highlighted { background-color: yellow; }
哦哇,我的错误,我很抱歉,我以为你在谈论一个普通的旧网页......我不知道这是否适用于“Android网络视图”。 – 2011-03-14 05:32:18
np,thx很多男人,这似乎很有帮助,虐待检查它是否适用于webview,我会让你知道:) – shadesco 2011-03-14 07:53:24
行一些CSS为什么不试试呢? titleWebView是具有加载或加载的HTML的WebView。 searchText应包含要搜索的文本。我构建了一个对话框,用于从用户那里获取搜索条件,并在用户每次搜索时重新加载网页。包含searchText的所有条款都会突出显示(在我的Nexus One上为浅绿色)。希望这可以帮助。
titleWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if (searchText != null && !searchText.equals("")) {
int i = titleWebView.findAll(searchText);
Toast.makeText(getApplicationContext(), "Found " + i + " results !",
Toast.LENGTH_SHORT).show();
try {
Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
m.invoke(titleWebView, true);
} catch (Throwable ignored) {
}
searchText = "";
}
}
});
如果我没有弄错,你应该参考findAll(searchText)上的'WebView视图' '。它应该和'titleWebView'一样(已经完全加载)webview。 – 2011-11-01 19:52:33
雅,你说得对。 findAll在预加载的webview上运行。 – 2011-11-04 14:38:37
该死的 - 我会给这个100颗星,如果我可以 - 真棒 – PhillyNJ 2011-12-14 12:08:25
代码
Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
m.invoke(titleWebView, true);
该试验使用以下代码后。
findAll("search text")
当文本匹配Toast
显示。
findAll()已弃用!你可以像这样简单地使用API16以后的findAllAsync():
webView.setWebViewClient(new WebViewClient(){
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onPageFinished(WebView view, String url) {
if (searchText != null && !searchText.equals("")) {
webView.findAllAsync(searchText);
}
}
});
是的,这是可能的...你有什么尝试? – Cristian 2011-03-14 04:01:35