2012-10-30 77 views
0

我有一個帶有按鈕的HTML文件,當我們點擊按鈕時,按鈕將彈出一條警告消息。本地HTML文件在Android Webview中無法正常工作

我放置了HTML文件資產文件夾,它正確加載到模擬器,我可以看到按鈕,但我面臨的問題是,按鈕單擊不響應,我不能看到彈出消息。

我也啓用了JavaScript,但結果是否定的。然後我將警報事件更改爲JavaScript代碼,但無效。在這裏,我添加了我的代碼,我很感激任何人都可以提供幫助。

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(com.example.test.R.layout.activity_main); 

    myWebView= (WebView) findViewById(com.example.test.R.id.webView1); 
    myWebView.getSettings().setJavaScriptEnabled(true); 
    myWebView.loadUrl("file:///android_asset/myown.html"); 
} 

以下是我的HTML網頁代碼

<!DOCTYPE html> 
<html> 
    <body> 

     <button type="button" onclick="alert('Hello world!')">Click Me!</button> 

    </body> 
</html> 
+1

看看這個,它可以幫助你 [鏈接1] [1] [鏈路2] [2] [1]:http://stackoverflow.com/questions/5271898/javascript-a lert-not-working-in-android-webview [2]:http:// stackoverflow。COM /問題/ 4325639/Android的調用JavaScript的函數式,網頁視圖 – RajeshVijayakumar

+0

看看這個,它可以幫助你 [鏈接1] [1] [鏈路2] [2] [1]:http://stackoverflow.com/questions/5271898/javascript-alert-not-working-in-android-webview [2]:http://stackoverflow.com/questions/ 4325639/Android的調用JavaScript的函數式,網頁流量 – RajeshVijayakumar

回答

2

您需要使用webChromeClient並覆蓋onJsAlert()功能用於此目的:

WebView wv=new WebView(this); 
wv.setWebChromeClient(new WebChromeClient() { 
    @Override 
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) { 
       //Do what you need to after alert is received 
       return super.onJsAlert(view, url, message, result); 
     } 
1

編輯>這可能不是簡單的解決方案,但它的確提供了額外的功能

當我創建類似的東西時,它在4.1.2上工作。該警報提供了一個不錯的全息式彈出窗口。我使用了一個在線資源和一個webchromeclient(見我之前的答案)。

但是,如果您想確定此方法有效,您可以查看Android Developers的Building Web Apps in Webview頁面。它解釋了JavaScriptInterface。您可以使用它來從HTML頁面(本地或聯機)耦合JavaScript,而是讓它執行原生Java代碼。

例如,你可以使用HTML這樣

<input type="button" value="Click Me!" onClick="showAndroidToast('Hello World!')" /> 

<script type="text/javascript"> 
    function showAndroidToast(toast) { 
     Android.showToast(toast); 
    } 
</script> 

添加該類

public class JavaScriptInterface { 
Context mContext; 

/** Instantiate the interface and set the context */ 
    JavaScriptInterface(Context c) { 
     mContext = c; 
    } 

    /** Show a toast from the web page */ 
    public void showToast(String toast) { 
     Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); 
    } 
} 

之後,該代碼添加到您提供的樣本。

myWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android"); 
-1

下面的代碼是從我的生產環境,是完全的工作,我已經存儲了html文件到我assest文件夾,然後將其接入到Activity

代碼:

String uri = "file:///android_asset/htmlpages/" + index + ".htm"; 
WebView wb = (WebView) findViewById(R.id.webView_Glossary); 
wb.getSettings().setJavaScriptEnabled(true); 
wb.loadUrl(uri); 
相關問題