问题标签 [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.
android - Android WebViewClient 回调调用过于频繁
当我打电话时WebView#loadUrl
,我希望我应该只接到一个WebViewClient#onPageFinished
电话而没有WebViewClient#shouldOverrideUrlLoading
电话。但是,我得到了一个WebViewClient#shouldOverrideUrlLoading
(我通过始终调用 WebView#loadUrl 并返回 true 来实现),然后是两个WebViewClient#onPageFinished
具有相同 URL 的调用。
我正在加载的页面使用了很多 ajax 请求。ajax 请求是否调用WebViewClient
? 我的页面中没有任何元刷新。
这很令人沮丧。难道我做错了什么?
android - 在 WebViewClient 中启用通用 JavaScript
在谷歌搜索答案时,似乎我并不是唯一一个遇到似乎无法解决的问题的人。
我已经设法使用自定义 WebViewClient 创建了一个 WebView - 这使我可以拥有一个 processdialog 并在无法加载 URL 时显示错误消息。
但这会给 JavaScript 带来一个问题。我正在加载的 URL 有一些 JavaScript,它改变了一些 HTML 元素 CSS 样式(显示或隐藏元素)或重定向到另一个位置 onclick - 或者甚至可能想要显示一个警告框。但是通过使用 WebViewClient 这些都不起作用。
这是我加载页面的方式:
这可能会以更聪明的方式完成,但我是 Java 和 Android 开发的新手......
我是否可以为 WebViewClient 启用 JavaScript?删除 WebViewClient 解决了问题,但是当页面错误或完成加载时我无法捕获事件。
android - Facebook Like 按钮的 Android WebView
我正在尝试在 Android WebView 中制作类似 facebook 的功能(项目规范不允许打开浏览器或任何超出应用程序的活动)。
所以,限制是它必须在 WebView 中完成。我设法使它成为一个对话框,并且在用户单击按钮后,它(WebView)成功地(在同一视图中)重定向到 facebooks 登录页面。成功验证后,WebView
(在对话框中)将重定向到带有 facebook 标头的空白页面。
有趣的是,当用户离开空白对话框并再次单击“喜欢”按钮时,它的工作原理非常完美(喜欢和不喜欢)——它以某种方式保持身份验证处于活动状态。为了解决空白页,我尝试/使用了以下内容:
- 使用
WebViewClient
andshouldOverloadUrlForwarding
将整个过程保持在同一个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);
还尝试使用 和手动处理持久化
CookieSyncManager
cookieCookieManager
。
这一切都没有结果。我真的很感激任何帮助!
android - shouldOverrideUrlLoading 在页面加载时不起作用/捕获链接点击
我正在使用WebViewClient.shouldOverrideUrlLoading来捕获 WebView 中的任何链接点击。这在大约 95% 的情况下都有效,但有时根本不会调用它。
我在这三种情况下注意到了它:
- 当链接指向他们已经在的页面时。这不是什么大问题,并且报告了一个错误。
- 当页面仍在加载时,如果用户点击一个链接,它很少会捕捉到它。它只会打开链接而无需调用
shouldOverrideUrlLoading
. - 随机。在过去几个月中对此进行试验时,我注意到有时它无法捕捉到它。这种情况很少见,但确实会发生。
现在我的问题主要是如何解决问题 2,因为其他问题不大。但是,如果有人解决了 1 或 3,我很想听听。
另外,我应该提到我已经尝试了不同的返回值,shouldOverrideUrlLoading
并且我注意到总是返回 true 似乎有最好的结果,但是上面的问题仍然存在。
android - 如果在超时回调中修改了“window.location.href”,则 shouldOverrideUrlLoading(...) 不会执行
我有一个javascript函数'gotoMainPage()'
现在,如果作为“直接用户交互”的结果执行 WebViewClient,shouldOverrideUrlLoading(..)
则会调用WebViewClient gotoMainPage( )
,例如用户单击此 div:
<div.... onclick='gotoMainPage();'/>
但是,如果执行是通过setTimeout( gotoMainPage, 100 );
或通过XMLHttpRequest
回调完成的,shouldOverrideUrlLoading(..)
则永远不会调用,而是将请求的页面加载到网络视图。
我错过了一个明显的解释还是这是一个错误?
任何人?
java - android应用程序正在打开浏览器应用程序而不是webView,我该如何阻止它?
现在,当我按下特定按钮时,它会启动将网页打开到 webView 中的意图,但它会打开浏览器应用程序,显示不是我想要的地址栏。
在做了一些研究之后,我发现我可以使用 shouldOverrideUrlLoading() 方法来阻止这种情况的发生,只需在 webView 中打开页面,但我不知道如何在我的代码中实现这个方法,非常感谢帮助!
这是我在课堂上打开网页的内容:
android - Android WebViewClient onReceivedError 未调用 404 错误
嗨
,在列表视图中,我有一个 webview,它应该从服务器加载图像文件,当没有图像存在时,我需要一个虚拟图像。我试过
我在 FrameLayout 中有一个带有虚拟图像的 webview,在加载每个图像 url 后调用 onPageFinished 侦听器,但不会为产生 404 错误的 url 调用 onReceivedError。猜猜怎么做。
android - 通过 WebView.loadURL() 指定不存在的 URL 时,WebViewClient.onPageStarted() 调用了两次
这是我的代码
结果如下日志:
请注意对 onPageStarted( ) 的另一个调用...有谁知道这背后的原因吗?干杯!
android - onNewPicture() 什么时候被调用?
onNewPicture()的文档只说:
通知听众图片发生了变化
我的问题是:图片什么时候改变?
我注意到有些网页会生成几十个onNewPicture(),所以很明显“图片”在WebView上渲染页面的过程中会发生多次变化。
是什么让 WebView 图片发生变化?
我还没有看到任何生成少于 2 个 onNewPicture() 调用的页面页面,所以对于任何给定的 HTML 页面,onNewPicture() 是否保证被多次调用?
android - 链接过滤的Android webview问题
我希望有人能指出我哪里厚。
我正在调用 webviewclient 并覆盖加载以捕获 mailto 链接(工作)和特定的外部 URL(不工作)。特定链接只是在浏览器中启动非移动站点链接。我很想弄清楚这一点。
我尝试在那里玩 return true 并 return false ,我尝试了一个没有浏览器意图的版本。几乎所有人都会在 webview 而不是浏览器中打开链接,而那些没有打开的链接,什么也没做。
mailtos 运行良好,我在外部链接上缺少什么?
如果你需要它,这就是我如何调用 webclient。