WebView页面跳转失败求助:如何正确链接到其他页面?
Android本地HTML跳转异常解决方案
问题排查与修复步骤
1. 修复HTML结构错误
你的代码里用<a>标签直接包裹<table>,这违反了HTML规范(行内元素<a>不能包含块级元素<table>),浏览器解析时会出现异常,导致跳转行为不稳定。
修改方式:把链接放到表格内部元素上,比如给单元格添加点击事件,或者用<a>包裹单个单元格内容:
<table> <tr> <th style="width:85px;"><a href="page.html"><img src="icon.png" style="max-height:100%; max-width:100%"></a></th> <th class="appname"><a href="page.html"> Site <p class="apppub" style="text-align:left;">creator</p></a></th> </tr> <tr> <td><a href="page.html">desc</a></td> </tr> </table>
或者用JavaScript统一处理表格点击跳转:
<table onclick="window.location.href='page.html'"> <!-- 表格内容不变 --> </table>
2. 检查WebView配置
Android WebView默认可能限制本地文件访问或跳转行为,需要添加以下设置:
// 允许访问本地文件 webView.getSettings().setAllowFileAccess(true); // 允许加载assets目录下的资源 webView.getSettings().setAllowFileAccessFromFileURLs(true); // 设置WebViewClient,确保跳转在当前WebView内打开,不调用系统浏览器 webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // 处理本地路径跳转 if (url.startsWith("file:///android_asset/")) { view.loadUrl(url); return true; } return super.shouldOverrideUrlLoading(view, url); } });
3. 确认文件路径
确保page.html和index.html在同一assets目录下,直接使用相对路径page.html即可,无需额外添加assets/或file:///android_asset/前缀(WebView加载assets下的index.html时,相对路径会自动指向同目录)。
内容的提问来源于stack exchange,提问作者Fishsoupys
相关产品推荐
相关产品推荐

