Javascript 禁用android WebView中的链接
首先,我对编程非常熟悉,所以如果我的问题在任何方面都不清楚,请原谅我。 我目前正在尝试制作一个需要链接的应用程序,该应用程序不能在WebView中执行,也不能在其他浏览器中执行。我已成功地将以下两个链接放在一起,并创建了以下工作代码:Javascript 禁用android WebView中的链接,javascript,android,dom,webview,hyperlink,Javascript,Android,Dom,Webview,Hyperlink,首先,我对编程非常熟悉,所以如果我的问题在任何方面都不清楚,请原谅我。 我目前正在尝试制作一个需要链接的应用程序,该应用程序不能在WebView中执行,也不能在其他浏览器中执行。我已成功地将以下两个链接放在一起,并创建了以下工作代码: private class WebClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url)
private class WebClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url)
{
view.loadUrl("javascript:document.body.innerHTML = document.body.innerHTML.replace(/<a.*href=/gi,'<a href=\"#\" _url=');");
}
}
现在,代码工作了。。。但只有在第二次加载请求的网页之后。我第一次执行WebView时,example.com的所有链接都是完整的、可单击的和可执行的。使用backbutton,退出WebView并再次输入它,将显示通过更改而禁用的所有链接
<a href="http://www.example.com">link</a>
到
现在,我有一个理论,我一点也不确定(我不是程序员)。我相信JavaScript的执行速度会变慢,这会导致链接操作永远不会发生。这就是为什么它会在第二次使用缓存时工作。我是从阅读中得到这些想法的。然而,我不知道如何纠正它
所以我的问题是:我如何确保所显示的网站的链接都不能被使用?有没有办法在网站显示之前进行操作
谢谢你的时间和努力。这真是一个了不起的社区;)
- 克雷德
- 我认为这是错误的:
viewer.setWebViewClient(new WebViewClient());
我想你的意思是:
viewer.setWebViewClient(new WebClient());
这解释了为什么URL在第一次加载时不被禁用。但我不明白他们为什么第二次残疾
此外,我认为您应该删除以下内容:
view.loadUrl(url);
尝试删除
view.loadUrl(url)代码>从应该重写URL加载
,应该说嵌入式浏览器处理了该链接,但您什么也不做,没有导航,没有加载URL
。我删除了该行,但第一次加载的问题仍然存在。正如拉斯维加斯所指出的,我有一个错误的参考资料。谢谢你!更新:添加view.reload()代码>导致重新加载循环。编辑引用并删除view.loadUrl(url)代码>很成功。很好,它成功了!我删除了关于view.reload()
的建议。
viewer.setWebViewClient(new WebClient());
view.loadUrl(url);