问题标签 [webviewclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
12448 浏览

android - Android WebViewClient 回调调用过于频繁

当我打电话时WebView#loadUrl,我希望我应该只接到一个WebViewClient#onPageFinished电话而没有WebViewClient#shouldOverrideUrlLoading电话。但是,我得到了一个WebViewClient#shouldOverrideUrlLoading(我通过始终调用 WebView#loadUrl 并返回 true 来实现),然后是两个WebViewClient#onPageFinished具有相同 URL 的调用。

我正在加载的页面使用了很多 ajax 请求。ajax 请求是否调用WebViewClient? 我的页面中没有任何元刷新。

这很令人沮丧。难道我做错了什么?

0 投票
8 回答
91007 浏览

android - 在 WebViewClient 中启用通用 JavaScript

在谷歌搜索答案时,似乎我并不是唯一一个遇到似乎无法解决的问题的人。

我已经设法使用自定义 WebViewClient 创建了一个 WebView - 这使我可以拥有一个 processdialog 并在无法加载 URL 时显示错误消息。

但这会给 JavaScript 带来一个问题。我正在加载的 URL 有一些 JavaScript,它改变了一些 HTML 元素 CSS 样式(显示或隐藏元素)或重定向到另一个位置 onclick - 或者甚至可能想要显示一个警告框。但是通过使用 WebViewClient 这些都不起作用。

这是我加载页面的方式:

这可能会以更聪明的方式完成,但我是 Java 和 Android 开发的新手......

我是否可以为 WebViewClient 启用 JavaScript?删除 WebViewClient 解决了问题,但是当页面错误或完成加载时我无法捕获事件。

0 投票
4 回答
18725 浏览

android - Facebook Like 按钮的 Android WebView

我正在尝试在 Android WebView 中制作类似 facebook 的功能(项目规范不允许打开浏览器或任何超出应用程序的活动)。

所以,限制是它必须在 WebView 中完成。我设法使它成为一个对话框,并且在用户单击按钮后,它(WebView)成功地(在同一视图中)重定向到 facebooks 登录页面。成功验证后,WebView(在对话框中)将重定向到带有 facebook 标头的空白页面。

有趣的是,当用户离开空白对话框并再次单击“喜欢”按钮时,它的工作原理非常完美(喜欢和不喜欢)——它以某种方式保持身份验证处于活动状态。为了解决空白页,我尝试/使用了以下内容:

  • 使用WebViewClientandshouldOverloadUrlForwarding将整个过程保持在同一个WebView对话框中。
  • 使用WebChromeClient正确执行 JavaScript - 登录后没有它是不可能喜欢/不喜欢的。
  • 尝试使用setUserAgentString()模拟其他浏览器,如 Chrome 或 Firefox
  • 尝试了 SSL 错误证书处理(在 API 级别 8 中)(在WebViewClient

    @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); }

  • 使用(以及所有可能的组合)

    webView.getSettings().setAppCacheEnabled(true); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

  • 还尝试使用 和手动处理持久化CookieSyncManagercookie CookieManager

这一切都没有结果。我真的很感激任何帮助!

0 投票
2 回答
13191 浏览

android - shouldOverrideUrlLoading 在页面加载时不起作用/捕获链接点击

我正在使用WebViewClient.shouldOverrideUrlLoading来捕获 WebView 中的任何链接点击。这在大约 95% 的情况下都有效,但有时根本不会调用它。

我在这三种情况下注意到了它:

  1. 当链接指向他们已经在的页面时。这不是什么大问题,并且报告了一个错误
  2. 当页面仍在加载时,如果用户点击一个链接,它很少会捕捉到它。它只会打开链接而无需调用shouldOverrideUrlLoading.
  3. 随机。在过去几个月中对此进行试验时,我注意到有时它无法捕捉到它。这种情况很少见,但确实会发生。

现在我的问题主要是如何解决问题 2,因为其他问题不大。但是,如果有人解决了 1 或 3,我很想听听。

另外,我应该提到我已经尝试了不同的返回值,shouldOverrideUrlLoading并且我注意到总是返回 true 似乎有最好的结果,但是上面的问题仍然存在。

0 投票
2 回答
9364 浏览

android - 如果在超时回调中修改了“window.location.href”,则 shouldOverrideUrlLoading(...) 不会执行

我有一个javascript函数'gotoMainPage()'


现在,如果作为“直接用户交互”的结果执行 WebViewClient,shouldOverrideUrlLoading(..)则会调用WebViewClient gotoMainPage( ),例如用户单击此 div:
<div.... onclick='gotoMainPage();'/>

但是,如果执行是通过setTimeout( gotoMainPage, 100 );或通过XMLHttpRequest回调完成的,shouldOverrideUrlLoading(..)则永远不会调用,而是将请求的页面加载到网络视图。

我错过了一个明显的解释还是这是一个错误?

任何人?

0 投票
2 回答
2520 浏览

java - android应用程序正在打开浏览器应用程序而不是webView,我该如何阻止它?

现在,当我按下特定按钮时,它会启动将网页打开到 webView 中的意图,但它会打开浏览器应用程序,显示不是我想要的地址栏。

在做了一些研究之后,我发现我可以使用 shouldOverrideUrlLoading() 方法来阻止这种情况的发生,只需在 webView 中打开页面,但我不知道如何在我的代码中实现这个方法,非常感谢帮助!

这是我在课堂上打开网页的内容:

0 投票
6 回答
22058 浏览

android - Android WebViewClient onReceivedError 未调用 404 错误


,在列表视图中,我有一个 webview,它应该从服务器加载图像文件,当没有图像存在时,我需要一个虚拟图像。我试过

我在 FrameLayout 中有一个带有虚拟图像的 webview,在加载每个图像 url 后调用 onPageFinished 侦听器,但不会为产生 404 错误的 url 调用 onReceivedError。猜猜怎么做。

0 投票
3 回答
18327 浏览

android - 通过 WebView.loadURL() 指定不存在的 URL 时,WebViewClient.onPageStarted() 调用了两次

这是我的代码


结果如下日志:

请注意对 onPageStarted( ) 的另一个调用...有谁知道这背后的原因吗?干杯!

0 投票
1 回答
1466 浏览

android - onNewPicture() 什么时候被调用?

onNewPicture()的文档只说:

通知听众图片发生了变化

我的问题是:图片什么时候改变?

我注意到有些网页会生成几十个onNewPicture(),所以很明显“图片”在WebView上渲染页面的过程中会发生多次变化。

是什么让 WebView 图片发生变化?

我还没有看到任何生成少于 2 个 onNewPicture() 调用的页面页面,所以对于任何给定的 HTML 页面,onNewPicture() 是否保证被多次调用?

0 投票
1 回答
1815 浏览

android - 链接过滤的Android webview问题

我希望有人能指出我哪里厚。

我正在调用 webviewclient 并覆盖加载以捕获 mailto 链接(工作)和特定的外部 URL(不工作)。特定链接只是在浏览器中启动非移动站点链接。我很想弄清楚这一点。

我尝试在那里玩 return true 并 return false ,我尝试了一个没有浏览器意图的版本。几乎所有人都会在 webview 而不是浏览器中打开链接,而那些没有打开的链接,什么也没做。

mailtos 运行良好,我在外部链接上缺少什么?

如果你需要它,这就是我如何调用 webclient。