javascript - 在 android WebView 中禁用链接

标签 javascript android dom webview hyperlink

首先,我在编程领域还很新手,所以如果我的问题有任何不明确的地方,请原谅我。 我目前正在尝试制作一个需要链接的应用程序不能在 WebView 中执行 - 或者为此目的在另一个浏览器中执行。我设法放置了以下两个链接,In Android Webview, am I able to modify a webpage's DOM?Titanium Appcelerator Quickie: Disable links in 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=');");       
    }
}

上面的代码 fragment 放在 onCreate 方法之前,并在 onCreate 方法中被引用,如下所示:

    viewer = (WebView) findViewById(R.id.wv_engine);
    viewer.setWebViewClient(new WebViewClient());
    viewer.loadUrl(content);

现在,代码可以工作了……但只有在第二次加载所请求的网页之后。我第一次执行 WebView 时,example.com 的所有链接都完好无损、可单击和可执行。使用后退按钮,退出 WebView 并再次进入它会呈现通过更改禁用的所有链接

<a href="http://www.example.com">link</a>

<a href="#" _url="http://www.example.com">link</a>

现在,我完全不确定一个理论(我不是程序员)。我相信 JavaScript 的执行速度很慢,这导致链接操作永远不会发生。这就是为什么它第二次工作而不是使用缓存的原因。我从阅读中得到了这些想法 this discussion .但是我不知道如何纠正它。

所以我的问题是:如何确保所显示网站的任何链接都无法使用?有没有办法在网站显示之前进行操作?

感谢您的时间和精力。这真是一个了不起的社区;)

  • 克雷德

最佳答案

我认为这是错误的:

viewer.setWebViewClient(new WebViewClient());

我想你的意思是:

viewer.setWebViewClient(new WebClient());

这解释了为什么 url 在第一次加载时没有被禁用。但我不明白为什么他们第二次被禁用。

另外,我认为你应该删除这个:

view.loadUrl(url);

关于javascript - 在 android WebView 中禁用链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7416142/

相关文章:

jQuery 在单选字段上使用多个选择器

javascript - 从另一个 Controller 调用函数

javascript - 如何减少Document.getelementbyid

android - 从对象 URL 播放声音

android - 使用 PendingIntent 接收位置更新是否存在安全风险?

javascript - componentDidMount 中的意外关键字 'const',React

javascript - 在 JSX 中的 React 组件周围包装高阶组件 (HOC)

javascript - 从具有许多记录的 JSON 结果创建 JSON 结构

java - 如果直接调用,HttpGet 工作正常,但如果从 Android Activity 调用,则会发出 400 响应

javascript - 为什么说 React 的 Virtual DOM 概念比脏模型检查更高效?