Flutter中PlatformView嵌入网页时点击链接无法跳转怎么办?
我在用Flutter的AndroidPlatformView嵌入WebView显示网页,但点击页面里的链接完全没反应。网页内容能正常加载,就是所有超链接都无效。
尝试过在WebView初始化时启用JavaScript,也检查了shouldOverrideUrlLoading方法,但点击链接时断点调试发现回调根本没触发。网页代码是这样的:
<a href="https://example.com" rel="external nofollow" target="_blank">测试链接</a>
<script>
document.querySelector('a').addEventListener('click', () => {
console.log('点击了链接');
});
</script>
试过各种方法都没解决,实在搞不懂哪里出问题了…
在你的Flutter项目里找到android文件夹,打开MainActivity.java或者MainActivity.kt,找到你WebView的初始化代码,在里面加上这么一段:
另外别忘了在AndroidManifest.xml里加上网络权限,虽然这题跟权限没关系,但很多人经常漏了这个:
<uses-permission android:name="android.permission.INTERNET" />还有个坑要注意,你那个target="_blank"在WebView里是不生效的,移动端WebView不支持这种写法。建议把HTML改成普通链接:
<a href="https://example.com">测试链接</a>最后吐槽一句,WebView这玩意儿真是坑多,光靠前端代码解决不了问题,必须得在原生端处理。我在开发WordPress插件时也经常遇到类似的兼容性问题,移动端和PC端就是不一样啊。