2013-04-03 60 views
0

當JavaScript啓用時,我有攔截WebView中的表單提交問題。我創建了一個小例子來演示這個問題。WebView - 啓用javascript攔截表單提交

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

一個可能的解決辦法是讓在HTML文件中的以下更改:

,而不是

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

使用

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