首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

evaluateJavascript中的Android webview表单提交不起作用

evaluateJavascript 是 Android WebView 中的一个方法,用于在 WebView 的当前页面上执行 JavaScript 代码。如果你在使用 evaluateJavascript 方法时遇到表单提交不起作用的问题,可能是由于以下几个原因:

基础概念

  • WebView: Android 中的一个组件,用于显示网页。
  • evaluateJavascript: 这个方法允许你在 WebView 中执行 JavaScript 代码,并且可以在代码执行完毕后获取结果。

可能的原因及解决方案

  1. JavaScript 未启用 确保 WebView 启用了 JavaScript。
  2. JavaScript 未启用 确保 WebView 启用了 JavaScript。
  3. JavaScript 接口未正确设置 如果你使用了 JavaScript 接口(addJavascriptInterface),确保它被正确设置。
  4. JavaScript 接口未正确设置 如果你使用了 JavaScript 接口(addJavascriptInterface),确保它被正确设置。
  5. 表单提交代码错误 检查你的 JavaScript 代码是否有误,确保表单提交的逻辑是正确的。
  6. 表单提交代码错误 检查你的 JavaScript 代码是否有误,确保表单提交的逻辑是正确的。
  7. 异步调用问题 evaluateJavascript 是异步的,如果你需要在 JavaScript 执行完毕后立即进行操作,可能需要设置回调。
  8. 异步调用问题 evaluateJavascript 是异步的,如果你需要在 JavaScript 执行完毕后立即进行操作,可能需要设置回调。
  9. 页面加载完成后再执行 JavaScript 确保在页面完全加载后再执行 JavaScript 代码。
  10. 页面加载完成后再执行 JavaScript 确保在页面完全加载后再执行 JavaScript 代码。
  11. 跨域问题 如果表单提交涉及到跨域请求,可能会因为浏览器的同源策略而失败。这种情况下,你可能需要在服务器端设置 CORS 头部。

示例代码

以下是一个简单的示例,展示了如何在 WebView 中启用 JavaScript 并提交表单:

代码语言:txt
复制
WebView webView = findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        // 页面加载完成后提交表单
        webView.evaluateJavascript("document.getElementById('myForm').submit();", null);
    }
});

webView.loadUrl("file:///android_asset/myform.html");

应用场景

  • 混合应用开发: 在原生 Android 应用中使用 WebView 来加载和交互网页内容。
  • 动态内容加载: 当需要根据用户操作动态改变页面内容时,可以使用 JavaScript 来实现。

优势

  • 灵活性: 可以在原生应用中嵌入网页,实现复杂的用户界面和交互。
  • 开发效率: 可以复用现有的 Web 技术栈和资源。

通过以上步骤,你应该能够解决 evaluateJavascript 中 Android WebView 表单提交不起作用的问题。如果问题仍然存在,建议检查具体的 JavaScript 代码和 WebView 的配置是否有误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 表单提交中的input、button、submit的区别

    IE浏览器的兼容,请记住button[type]在IE中的默认值是button,这意味着它只是一个按钮而不会引发表单提交。   ...提交表单时,value会被作为表单数据提交给服务器。 在IE中,甚至会把button开始与结束标签之间的内容作为name对应的值提交给服务器。...3.回车键提交表单 Enter键是可以提交表单的!但是你可能已经注意到了,并非所有的表单都可以用Enter键来提交。...当表单中只有一个单行的文本输入控件时,用户代理应当接受回车键来提交表单。 “单行”指的是type为text而非textarea,显然在textarea中回车提交表单是怎样的难以接受。...其实在实践中,有多个单行的input也可以用Enter提交,比如登录页面。 4.阻止表单提交 阻止表单提交也是一个常见的话题,通常用于客户端的表单验证。

    4.1K100

    Android webview 与 js(Vue) 交互

    二、Android 原生调用 JS 中的方法 Android 调用 JS 有两种方式,都是通过 WebView 的方法: webview.loadUrl() webview.evaluateJavascript...得不到 js 的返回值,evaluateJavascript() 可以获取返回值 evaluateJavascript() 在 Android 4.4 之后才可以使用 要实现的效果: 如下图...,页面上有一行文字 ”哈哈“,要在 WebView 页面加载完的时候通过 Android 原生代码将这行字改为 ”我通过原生方法改变了文字“ + Android 传递过来的参数,并给 Android 返回一个字符串...Android 调用的方法 callJsFunction(str) , 并可接收一个参数 str,然后改变页面中的文字。...总结起来 Vue 中要做的事情就两步: 在 methods 中定义方法 在 mounted 中将方法挂载在 window 上 2.2 Android 中代码 需要等页面加载完在 WebView 的 onPageFinished

    10.3K40

    Carson带你学Android:你要的WebView与 JS 交互方式都在这里了

    JS代码的方法有2种: 通过WebView的loadUrl() 通过WebView的evaluateJavascript() 对于JS调用Android代码的方法有3种: 通过WebView的addJavascriptInterface...具体分析 2.1 Android通过WebView调用 JS 代码 对于Android调用JS代码的方法有2种: 通过WebView的loadUrl() 通过WebView的evaluateJavascript...() 方式1:通过WebView的loadUrl() 实例介绍:点击Android按钮,即调用WebView JS(文本名为javascript)中callJS() 具体使用: 步骤1:将需要调用的JS...映射的对象 test.hello("js调用了android中的hello方法"); } <body...()、onJsConfirm()、onJsPrompt()方法回调拦截JS对话框alert()、confirm()、prompt() 消息 在JS中,有三个常用的对话框方法: 方式3的原理:Android

    90120

    表单提交中的用户体验优化,数据保存与清理

    在吾爱资源网的网站设计中,我在提交资源的页面,原本的设计是这样的: >提交 实现的效果就是判断是否满足我设置的条件,如果条件满足直接提交数据,否则提交按钮变成无效。提交后数据清空,不管是否成功,数据都会清理掉。...但是我设置的条件中反馈一些错误提示,然后数据清零。比如会设置资源链接中是否包含链接,如果不包含,就提示链接有误,然后数据清理完了,这样其实体验比较差,应该是数据有误,就直接在原有基础上修改的。...我在原有的基础上第一,设置了input标签和textarea标签的数据保留,然后为了保证在提交成功后数据清理掉,我使用了提交成功的判断,这个方法其实在提交按钮上已经用过,这样设置的话,避免了使用后端处理比较麻烦...>>提交 大家在实操的时候,也要考虑到用户反馈,保证产品有更好的体验。

    12610

    Android:你要的WebView与 JS 交互方式 都在这里了

    上述功能是由Android的WebView实现的,其中涉及到Android客户端与Web网页交互的实现 今天我将全面介绍Android通过WebView与JS交互的全面方式 阅读本文前请先阅读:Android...通过WebView的loadUrl() 2. 通过WebView的evaluateJavascript() 对于JS调用Android代码的方法有3种: 1....通过WebView的evaluateJavascript() 方式1:通过WebView的loadUrl() 实例介绍:点击Android按钮,即调用WebView JS(文本名为javascript)...onPageFinished()属于WebViewClient类的方法,主要在页面加载结束时调用 方式2:通过WebView的evaluateJavascript() 优点:该方法比第一种方法效率更高...映射的对象 test.hello("js调用了android中的hello方法"); } <body

    6.9K31

    Android中Java和JavaScript交互

    Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。...WebView开启JavaScript脚本执行 WebView设置供JavaScript调用的交互接口。 客户端和网页端编写调用对方的代码。...这里展示一个简单的交互示例 具有返回值的js方法 lineos:false 1 2 3 function getGreetings() { return 1; } java代码时用evaluateJavascript...方法调用 lineos:false 1 2 3 4 5 6 7 8 private void testEvaluateJavascript(WebView webView) { webView.evaluateJavascript...如打印日志可验证 lineos:false 1 ThreadInfo=Thread[WebViewCoreThread,5,main] 解决上述的异常,将webview操作放在主线程中即可。

    93220

    Android开发笔记(一百五十一)WebView与JavaScript交互的四种形式

    App主动从Web获取信息 WebView对象调用evaluateJavascript方法,该方法通过回调接口ValueCallback获得JS的返回串,具体的App代码如下所示: if (Build.VERSION.SDK_INT...WebView要调用setWebChromeClient方法设置JS的解释客户端,从而避免JS中alert方法不弹窗的问题,因为JS页面的渲染需要WebChromeClient去实现。 2....3. evaluateJavascript是Android在4.4.2之后才引入的新方法,如果是4.4.2之前的Android版本,需要注意做兼容处理。 4....如果App与JS存在嵌套调用(即A调用B,B内部又去调用A),那么Android4.4.2之后务必要保证两个调用在同一个线程中,不然运行时会报错“java.lang.Throwable: A WebView...具体的解决方法是:调用WebView对象的post方法,然后在post的Runnable任务中再去调用JS方法,例子代码如下所示: private final class Contact { /

    1.3K10

    WebView深度学习(一)之WebView的基本使用以及Android和js的交互

    ); //这个api仅仅清除自动完成填充的表单数据,并不会清除WebView存储到本地的数据 Webview.clearFormData(); (二)常用类 (1) WebSettings类(主要作用是...加载一个网页: webView.loadUrl("http://www.google.com/"); //方式b:加载apk包中的html页面 webView.loadUrl("file:///android_asset...代码 的方法有2种: 通过WebView的loadUrl() 通过WebView的evaluateJavascript() 对于 JS调用Android代码 的方法有3种: 通过WebView...实际开发中,Android更多的是调用远程JS代码,即将加载的JS代码路径改成url即可。...Android调用 JS代码 通过WebView的loadUrl() (2)通过WebView的evaluateJavascript() 说明:该方法比第一种方法效率更高,因为该方法的执行不会使页面刷新

    6.3K31
    领券