歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android中webview和js之間的交互及注意事項

Android中webview和js之間的交互及注意事項

日期:2017/3/1 10:00:25   编辑:Linux編程

1.Android中利用webview調用網頁上的js代碼。

Android 中可以通過webview來實現和js的交互,在程序中調用js代碼,只需要將webview控件的支持js的屬性設置為true,,然後通過loadUrl就可以直接進行調用,如下所示:

mWebView.getSettings().setJavaScriptEnabled(true);

mWebView.loadUrl("javascript:test()");

2. 網頁上調用android中java代碼的方法

在網頁中調用java代碼,需要在webview控件中添加javascriptInterface。如下所示:

mWebView.addJavascriptInterface(new Object() {

public void clickOnAndroid() {

mHandler.post(new Runnable() {

public void run() {

Toast.makeText(Test.this, "測試調用java", Toast.LENGTH_LONG).show();

}

});

}

}, "demo");

在網頁中,只需要像調用js方法一樣,進行調用就可以。

<div id='b'><a onclick="window.demo.clickOnAndroid()">b.c</a></div>

3. Java代碼調用js並傳參

首先需要帶參數的js函數,如function test(str),然後只需在調用js時傳入參數即可,如下所示:

mWebView.loadUrl("javascript:test('aa')");

4.Js中調用java函數並傳參

首先一樣需要帶參數的函數形式,但需注意此處的參數需要final類型,即得到以後不可修改,如果需要修改其中的值,可以先設置中間變量,然後進行修改。如下所示:

mWebView.addJavascriptInterface(new Object() {

public void clickOnAndroid(final int i) {

mHandler.post(new Runnable() {

public void run() {

int j = i;

j++;

Toast.makeText(Test.this, "測試調用java" + String.valueOf(j), Toast.LENGTH_LONG).show();

}

});

}

}, "demo");

然後在html頁面中,利用如下代碼<div id='b'><a onclick="window.demo.clickOnAndroid(2)">b.c</a></div>,即可實現調用

注意:在html頁面中,不支持css樣式的偽類事件(即已被注釋的代碼)。

例如:

.zhantin01{width:1000px; height:492px; margin:0 auto;background:url(images/zt01.jpg) no-repeat 0 0; position:relative}
.zhantin01 a,.zhantin01 div{opacity:0.5; background-color:#f00; position:absolute;left:0;top:310px;width:40px; height:50px;}
.zhantin01 .zg01{width:100px; height:100px;}


/* .zhantin01 a:link,.zhantin01 a:visited{opacity:0;} */
/* .zhantin01 a:hover{opacity:0.5;} */
/* .zhantin01 a.point:link,.zhantin01 a.point:visited{opacity:0.5;} */

如果這樣寫,在html頁面中將不能調用Android頁面的java代碼。

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved