Javascript 禁用android 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)

首先,我对编程非常熟悉,所以如果我的问题在任何方面都不清楚,请原谅我。 我目前正在尝试制作一个需要链接的应用程序,该应用程序不能在WebView中执行,也不能在其他浏览器中执行。我已成功地将以下两个链接放在一起,并创建了以下工作代码:

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);