Android中webview跟JAVASCRIPT中的互動

來源:互聯網
上載者:User

  在android的應用程式中,可以直接調用webview中的javascript代碼,而webview中的javascript代碼,也可以去調用ANDROID應用程式(也就是JAVA部分的代碼).下面舉例說明之:

1 JAVASCRIPT指令碼調用android程式
   要在webview中,調用addJavascriptInterface(OBJ,interfacename)
其中,obj為和javascript通訊的應用程式,interfacename為提供給JAVASCRIPT調用的
名稱,設定如下:

WebView webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(getIntent().getCharSequenceExtra("url").toString());
//設定JavaScript指令碼代碼的介面名稱是”android”
webView.addJavascriptInterface(this, "android");
其中WEBVIEW調用的HTML頁中,JS如下:
<script type="text/javascript">
function ok() {
  android.js(document.forms[0].elements[0].value, document.forms[0].elements[1].value);
}

而這個android.js在哪呢?那是在應用程式中的
//JavaScript指令碼代碼可以調用的函數js()處理
public void js(String action, String uri) {
          ...../
}

  這個JS中就是處理JAVASCRIPT發送過來的請求了.

2) 下面的例子,當WEBVIEW網頁中輸入後,點提交按鈕,會跟ANDROID的應用程式進行互動
WebView webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new MyWebChromeClient());
webView.loadUrl(getIntent().getCharSequenceExtra("url").toString());

//onJsAlert()函數接收到來自HTML網頁的alert()警告資訊
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
if (message.length() != 0) {
AlertDialog.Builder builder = new AlertDialog.Builder(JExample02.this);
builder.setTitle("From JavaScript").setMessage(message).show();
result.cancel();
return true;
}
return false;
}

而HTML頁中的JS事件為:
  <input type="button" value="alert" onclick="alert(document.forms[0].elements[0].value)">

特別提示下,在自訂的MyWebChromeClient())中,除了可以重寫onJSAlert外,還可以
重寫onJsPrompt,onJsConfirm等,可以參考
http://618119.com/archives/2010/12/20/199.html

3) 下面這個例子,先顯示第一張圖片,點一點後,再顯示第2張圖片
HTML JS中:
   <script language="javascript">
    function changeImage02() {
        document.getElementById("image").src="navy02.jpg";
    }
    function changeImage01() {
        document.getElementById("image").src="navy01.jpg";
    }
  </script>
</head>
<body>
  <a onClick="window.demo.onClick()">
    <img id="image" src="navy01.jpg"/></a>
</body>

當點<a onClick="window.demo.onClick()">
後,調用ANDROID應用程式中的處理部分,看程式:
     webView.addJavascriptInterface(new JSInterface(),"demo");

public final class JSInterface {
        //JavaScript指令碼代碼可以調用的函數onClick()處理
        public void onClick() {
            handler.post(new Runnable() {
                public void run() {
                    if (flag == 0) {
                    flag = 1;
                    webView.loadUrl("javascript:changeImage02()");
                    } else {
                    flag = 0;
                    webView.loadUrl("javascript:changeImage01()");
                    }
                }
            });
        }
    }
可以看到,ANDROID中,通過webView.loadUrl去調用HTML頁面中的JS風之境地 java-javascript 蘑菇街女裝

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.