2013-10-15 104 views
1

我有一個安裝了WebChromeClient的android webview。 在網頁中的某個動作中,我創建了一條帶有消息的JavaScript警報,該消息傳回給onJsAlert方法。WebChromeClient onJsAlert收到未定義消息

然後,根據我打開另一個活動的消息。 這適用於Android> = 4,但不適用於Android 2.3。

在Android 2.3 onJsAlert方法也被調用,但傳遞的信息參數是未定義的某些原因。任何想法爲什麼這可能發生,將非常感激!

+0

我也是這樣做的......但是我的代碼也能在2.3上運行良好。如果你有任何錯誤?如果是的話,你能否提供你的錯誤日誌 – Meenal

+0

沒有不幸的是,沒有錯誤。唯一相關的日誌:'''的WebView(9457):singleCursorHandlerTouchEvent -getEditableSupport FASLE''','''I/Web控制檯(9457):幻燈片:在不確定的:1''','''d/DEBUG( 9457):JS的消息是:undefined''',最後兩個是從我 – peshkira

+0

確定我應該在這裏發佈我的代碼爲你和你的 – Meenal

回答

1

下面是我用

private WebView webView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.demo); 

    try { 
     webView = (WebView) findViewById(R.id.webView); 

     WebSettings webSettings = webView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     webView.setWebChromeClient(new MyJavaScriptChromeClient()); 

     webView.loadUrl("file:///android_asset/texthtml.html"); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

private class MyJavaScriptChromeClient extends WebChromeClient { 
    @Override 
    public boolean onJsAlert(WebView view, String url, String message, 
      final JsResult result) { 
     // handle Alert event, here we are showing AlertDialog 


     new AlertDialog.Builder(WebActivity.this) 
       .setTitle("JavaScript Alert !") 
       .setMessage(message) 
       .setPositiveButton(android.R.string.ok, 
         new AlertDialog.OnClickListener() { 
          public void onClick(DialogInterface dialog, 
            int which) { 
           // do your stuff 
           result.confirm(); 
          } 
         }).setCancelable(false).create().show(); 
     return true; 
    } 

} 

代碼,這我的HTML文件

<html> 

<div onclick="alert('hello')"> Click Me !! </div> 

+0

匹配的問題是其他地方的輸入範圍內騙我的javascript函數,然後確實沒有返回undefined。我只是假設javascript函數正常工作,問題應該在onJsAlert回調或其他地方。儘管如此,我接受你的答案,因爲它幫助我看到我的代碼的這部分是正確的,我應該看看其他地方。謝謝! – peshkira

+0

好的..謝謝你:) – Meenal