问题标签 [android-webview-javascript]
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.
java - Android Webview EvaluateJavascript 有时不返回响应
几周来我一直在尝试解决这个问题,但不知道是什么导致了这个问题。在我的项目中,我正在使用 Android Webview 的evaluateJavascript()
方法,如下所示:
我发送的 javascript 示例字符串是:
或者
虽然 10 次调用中有 9 次在onReceiveValue()
方法中返回一个值,但有时我只是直接从未收到任何响应。
这种缺乏回应使连锁事件成为一场噩梦,我不知道为什么会发生这种情况。
更多数据可以避免任何其他问题:
- 这个项目的最低 SDK 是 21,我的目标是 28。
- 我目前没有使用任何
javascriptInterface
s 并且出于一些与业务相关的原因不打算用于该项目。 - 当我在该方法中收到来自 webview 的响应时,
onReceiveValue()
它通常是我刚刚设置的值,如果是单击事件,则为“null”。无论如何,问题不在于我有时会收到空值或其他值,而是有时明显缺乏响应。 - 如代码示例所示,我肯定会按照文档在 UI 线程上运行它。
- 每当我点击按钮时,我让服务器开发人员在控制台日志中添加一些代码,当我在
onReceiveValue()
方法中返回一个成功的值时,控制台日志正在工作并响应,但是当我处于无法返回的情况时响应,Web 控制台日志永远不会触发,它永远不会检测到与按钮的交互。 - 我还尝试添加一个带有逻辑的计时器,该计时器侦听来自 webview 的响应,如果它没有收到它,则尝试再次进行相同的调用,最高可达 10 倍。当第一次调用失败时,后续尝试都不起作用。
- 这些是我的 webview 的设置:
似乎问题出在 Javascript Bridge 上,但我不能确定。
我的总结问题是,什么可能导致 Android WebView 的evaluateJavascript()
调用不触发回调也不在onReceiveValue()
方法中返回值?
android - 渲染进程崩溃 webview Android Pie (9)
尝试从资产文件夹加载 HTML 文件,应用程序在 Android v8.1 之前工作正常,并在 Android Pie (9) 设备中崩溃。
似乎 WebView 渲染过程根据调试日志崩溃,找到解决此问题的方法。
请帮助和建议...在此先感谢。
从日志猫:
--------- 崩溃开始
android - 在运行时加载开始时更新 WebView 中的内容
加载开始后,我需要在 webview 上添加相同的内容。例如,如果我有网页:
我需要得到
但<same content/>
必须在加载之前<head>
你有什么想法吗?
android - Android webview没有将地理位置发送到javascript
我正在编写一个应用程序来获取用户的位置并将其发送到服务器。我在服务器端使用 JavaScript 和 PHP。我正在尝试在 android WebView 上加载此应用程序,它没有将位置发送到 JavaScript,以便可以通过 ajax 将位置发送到服务器,但是当我使用 Chrome 在移动设备上运行它时,它可以正常工作。请我需要知道我做错了什么。我的android代码粘贴在下面
我已经在 android 清单文件中获得了必要的权限。
下面的代码是我处理位置的 JavaScript
当我单击用户界面上的按钮时,假设用户位置被发送到服务器并显示成功消息,但显示的输出消息是来自 showError 函数的消息“位置不可用。请记住,这应用程序在我的移动设备上加载 chrome 时按预期工作。
android - 子 webview 从父 webview 启动一次后出现键盘问题
我正在开发一个有 2 个活动的 Android 应用程序。在一项活动中,我有一个 webview(父),它使用 WebChromeClient 的 onCreateWindow 创建子 webview。在 web 代码方面,我存储了 window.open() 的引用,它导致 onCreateWindow 创建子 webview 并向其发送消息。
活动一:
我从网络代码中获取消息以开始第二个活动并完成它。由于我只存储了来自 web 代码的窗口的一个引用,因此window.open()
我不会破坏 webview,而只是完成活动;
活动一:
活动二:
第一次,第二个 Activity 中的子 webview 的键盘没有任何问题,但是一旦我完成了 Activity 并再次启动它,键盘需要很长时间才能显示出来,我在键盘上键入的内容不会出现在网络的文本字段中。
我试过的:
设置和清除子 webview 的焦点
window.open() 的链接使用以下方法丢失:保存子 webview 的状态和来自 onCreateWindow() 的消息参数,销毁子 webview,再次创建 webview,设置状态,并设置新目标的新目标子网页视图。
在 SecondActivity 的 finish() 中关闭键盘。
1/2/3的组合
android - 在 WebViewClient.shouldOverrideUrlLoading 之前调用 window.beforeunload
在配置了 WebView 和 WebViewClient 的 Android 应用中,在从 js 调用window.open(url, '_system')之后,会在调用Android WebViewClient.shouldOverrideUrlLoading之前触发js 事件window.beforeunload。这是一个适当的和预期的行为吗?有没有办法在没有触发 window.beforeunload 事件的情况下拦截打开的 url?
android-webview - android webview javascript桥,为什么传入的字符串被解析为div元素
在 webview 代码中,它调用加载的 javascript,传入 html div 元素 id `"module_1", 的字符串<div id="module_1" class="module"></div>
:
并且 javascript 将接受 div 元素 id 的字符串,然后查找 div 元素并获取其位置:
但它崩溃了,因为传入的moduleElementId
不再是字符串 div id "module_1"
,而是解析为<div id="module_1" class="module"></div>
.
对应的 console.log 是:
它如何从字符串 id 更改为<div>
元素?
java - Android Studio Webview (Java) - 有没有办法等到网页内的加载完成后再加载 url?
我正在尝试使用webView.loadUrl(...);
. 但是,我发现在页面已经加载后有一个加载“创建”这些元素。所以,我没有找到获得这些的方法。我尝试使用onPageFinished
,但是当网页内的加载完成时,它看起来不像被调用。我还尝试放置一个触发webView.loadUrl(...);
. 只有当用户没有在按钮上单击太快时,此提示才有效,因为这样加载之前没有时间完成。
这是页面启动的视频,希望您能更好地理解我在页面内加载的意思:
https ://www.youtube.com/watch?v=q1267dcJai8&feature=youtu.be
如果我还不够清楚,我很乐意进一步澄清。先感谢您!
编辑:为了澄清一些事情,我并不是在寻求一种获取这些元素的方法。一种延迟webView.loadUrl(...);
网页加载的方法对我来说也是完美的。
android - webview 可以启动一个活动 onReceivedError 吗?
当 webview 无法加载内容时,我正在尝试启动一个活动(Errorpage)。但是在构建过程中没有错误,但是应用程序关闭了,而 inernet 关闭了。它应该启动 Errorpage 活动。
如果有人有任何想法请帮助我。还请评论您对代码/逻辑的建议。(我对android编程很陌生)
android-studio - “不支持键“target-densitydpi”。在 webVIew 中加载 url
我试图在 webView 中启动一个 URl 但它抛出了一个错误,比如
“不支持键“target-densitydpi”。
我尝试将 setUseWideViewPort 添加到 webview 但不起作用我们还尝试通过在 web 源代码中添加以下行但不起作用
你能帮我解决这个问题吗谢谢