Android “提交表单”按钮在WebView上不起作用

Android “提交表单”按钮在WebView上不起作用,android,android-webview,Android,Android Webview,在Web视图中加载某些网站时,我无法提交它们的表单。当点击提交输入(按钮)时,它会聚焦,但不会发生其他事情 这些网站在Chrome上工作(在同一台设备上) 如何修复此问题?是否缺少设置 我们也将感谢您对发生此问题原因的反馈。 例子 复制步骤 加载浏览活动,它将加载https://m.ebay.com/ 页面加载后,输入搜索查询(例如“笔记本电脑”) 按窗体的蓝色搜索按钮或软件键盘的操作按钮(放大镜图标) 预期行为:应提交搜索表单并显示搜索结果 实际行为:蓝色搜索按钮获得焦点(由明亮的边框表示)

在Web视图中加载某些网站时,我无法提交它们的表单。当点击提交输入(按钮)时,它会聚焦,但不会发生其他事情

这些网站在Chrome上工作(在同一台设备上)

如何修复此问题?是否缺少设置

我们也将感谢您对发生此问题原因的反馈。


例子 复制步骤

  • 加载浏览活动,它将加载
    https://m.ebay.com/
  • 页面加载后,输入搜索查询(例如“笔记本电脑”)
  • 按窗体的蓝色搜索按钮或软件键盘的操作按钮(放大镜图标)
  • 预期行为:应提交搜索表单并显示搜索结果

    实际行为:蓝色搜索按钮获得焦点(由明亮的边框表示),但不会发生其他情况


    BrowseActivity.java

    public class BrowseActivity extends AppCompatActivity {
    
        WebView mWebView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_browse);
    
            mWebView = (WebView) findViewById(R.id.home_wv_content);
            mWebView.setWebViewClient(new WebViewClient());
            mWebView.setWebChromeClient(new WebChromeClient());
            mWebView.getSettings().setJavaScriptEnabled(true);
    
            // Ebay has a blue search button where this issue can be replicated
            mWebView.loadUrl("https://m.ebay.com");
        }
    }
    
    活动\u browse.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="my.example.BrowseActivity">
    
        <WebView
            android:id="@+id/home_wv_content"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    
    </android.support.constraint.ConstraintLayout>
    
    
    为了捕捉按钮上的点击,请阅读输入查询,然后重定向到搜索页面


    无论如何,这种方法与网站本身(如ebay)紧密结合,我希望它能与不同的网站一起使用。另外,我不希望网站中的更改破坏我的应用程序。

    您可能需要启用webview中的其他内容,使其具有完全等效的浏览器。在webview中,除了javascript之外,还有其他默认禁用的功能)

    尝试此设置(基于我的项目,我们在webview中确实遇到了一些问题):


    我有过类似的问题,特别是上传文件

    关于此问题发生原因的反馈:-

    问题是有不同的操作系统版本和不同的Web引擎版本。因为我假设web视图呈现的是HTML5页面,并且在给定的设备上它工作不好,所以您可能需要的支持超过JS

    有些网页跟踪提交的数量,需要访问客户端/web存储

    WebSettings mWebSettings = mWebView.getSettings();
    mWebSettings.setJavaScriptEnabled(true); // Done above
    mWebSettings.setDomStorageEnabled(true); // Try
    mWebSettings.setSupportZoom(false);
    mWebSettings.setAllowFileAccess(true);
    mWebSettings.setAllowContentAccess(true);
    
    如果我不知道Android操作系统的版本,我就帮不上什么忙了,它将指向所使用的Web引擎版本


    干杯。

    也许是一个建议,而不是在您的网络视图中加载这些网站。让他们在浏览器应用程序中加载吗?@Steven,不幸的是,我无法做到这一点,因为我的应用程序需要解析来自webview的数据,这取决于用户与所显示网站的交互。有时候,android webview中不起作用。我帮不了你。也许根据建议,我们不能使用易趣的api?易趣只是一个例子,我需要在我的应用程序中加载不同的网站。这不是答案,但如果您在示例应用程序中禁用JavaScript,则m.Ebay.com上的搜索按钮将起作用。(刚刚试过。)我猜是JavaScript错误或其他JS交互导致了无声的失败。谢谢<代码>mWebView.getSettings().setDomStorageEnabled(true)
    mWebView.getSettings().setDatabaseEnabled(true)
    这样做是因为ebay(和其他一些网站)使用LocalStorage,这导致了一个JS错误,因为当这些选项未启用时,
    LocalStorage
    对我来说也是一个问题,但这并不能解决它。
    mWebView.getSettings().setDomStorageEnabled(true)
    mWebView.getSettings().setJavaScriptEnabled(true)适合我。
    
    WebSettings mWebSettings = mWebView.getSettings();
    mWebSettings.setJavaScriptEnabled(true); // Done above
    mWebSettings.setDomStorageEnabled(true); // Try
    mWebSettings.setSupportZoom(false);
    mWebSettings.setAllowFileAccess(true);
    mWebSettings.setAllowContentAccess(true);