WebView - 在启用javascript的情况下拦截表单提交

时间:2013-04-03 10:32:42

标签: android android-webview

启用javascript后,我在WebView中拦截表单提交时遇到问题。我创建了一个小例子来证明这个问题。

test1.html

<html>
  <body>
    <h1>Test 1</h1>
    <form action="http://111.222.33.44/test/test2.html" method="get">
      <input type="text" name="text1" />
      <input type="submit" value="Submit" />
    </form>
  </body>
</html>

测试活动

public class TestActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView webView = (WebView) findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);

        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Log.d("Test app", "Intercepted");
                return true;
            }

        });
        webView.loadUrl("http://111.222.33.44/test/test1.html");
    }

}

当我在Android 4.x上运行此应用程序时,单击“提交”按钮时会打印“截获”。当我在Android 2.1 - 2.3.x上运行此应用程序时,不会打印消息。

如何拦截Android 2.1 - 2.3.x上的表单提交?

谢谢。

1 个答案:

答案 0 :(得分:1)

一种可能的解决方法是在html文件中进行以下更改:

而不是

<input type="submit" value="Submit" />

使用

<input type="submit" value="Submit" onclick="this.form.submit();"/>