gpt4 book ai didi

android - WebView 中不可点击的链接

转载 作者:行者123 更新时间:2023-11-29 02:09:31 25 4
gpt4 key购买 nike

在我的应用程序中,我从 Web 服务中提取一些 HTML 并将其显示在 WebView 中。大多数情况下,应用程序会很好地显示 HTML 中的链接,因为它们是可点击的,并且可以打开 Android 浏览器。然而,其他时候,这些链接是不可点击的。事实证明,有时服务会提供 HTML 链接,这些链接不在 href 内,只是纯文本。

WebView 是否可以解析 HTML 并使这些链接“可点击”?我知道默认的 Android 浏览器可以做到这一点,但我不确定 WebViews。

最佳答案

Webview 可能没有内置检测器来自动链接页面中的纯 URL,但您可以在 WebView 中运行 JavaScript 函数以在页面完成加载时解析 URL。

基本上,类似于下面的内容(我还没有检查这段代码的语法,但它应该让你明白):

final WebView webview = (WebView)findViewById(R.id.browser);
/* JavaScript must be enabled if you want it to work, obviously */
webview.getSettings().setJavaScriptEnabled(true);

/* WebViewClient must be set BEFORE calling loadUrl! */
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url)
{
webview.loadUrl("javascript:(function() { " +
"var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; " +
"document.getElementsByTagName('body')[0].innerHTML = document.getElementsByTagName('body')[0].innerHTML.replace(exp,'<a href='$1'>$1</a>');" +
"})()");
}
});

webview.loadUrl("http://code.google.com/android");

请注意,上面的 JavaScript 借用了“How to replace plain URLs with links?”中的 URL 解析 JavaScript 正则表达式,有关 JavaScript 注入(inject)的更多信息可以在 Android WebViewClient 引用和 http://lexandera.com/2009/01/injecting-javascript-into-a-webview/ 中找到。 (不是我)。

关于android - WebView 中不可点击的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8305083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com