⑴ webview與js交互的參數有沒有限制
webview與js交互的參數一般是沒有限制的,隨便怎麼傳,但是由於規范,還是少傳點最好
⑵ 在webview中本地代碼如何與javascript進行交互,調用什麼方法,以及需要注意的事
可以,只要你是用webview打開的,那麼不管事遠程還是本地,都可以通過webview與app的本地java代碼進行交互。沒有任何區別。
1、webview必須設置支持Javascript
mWebview.getSettings().setJavaScriptEnabled(true);
2、加進一個回調的代理類JavaScriptInterface,並給它一個調用的名稱:ncp
mWebView.addJavascriptInterface(new JavaScriptInterface(), "ncp");
final class JavaScriptInterface {
public int callOnJs() {
return 1000;
}
public void callOnJs2(String mode) {
//TODO
}
}
3、JS頁面
<script type="text/javascript">
window.onload = function(){
document.getElementById('btn_1').addEventListener('click', onBtnClick, false);
var _int_value = window.ncp.callOnJs();
alert("get int from java:" + _int_value );
}
function onBtnClick() {
window.ncp.callOnJs2("click");
}
</script>
接下來就可以調用js方法了,
1、Java調用js方法
mWebView.loadUrl("javascript:onSaveCallback()");
2、JS訪問java方法
window.ncp.callOnJs2("click");
⑶ webview 與js怎樣實現數據交互
對於android初學者應該都了解webView這個組件。之前我也是對其進行了一些簡單的了解,但是在一個項目中不得不用webview的時候,發現了webview的強大之處,今天就分享一下使用webview的一些經驗。
1、首先了解一下webview。
webview介紹的原文如下:A View that displays web pages. This class is the basis upon which you can roll your own web browser or simply display some online content within your Activity. It uses the WebKit rendering engine to display web pages and includes methods to navigate forward and backward through a history, zoom in and out, perform text searches and more.
從上面你應該了解到了基本功能,也就是顯示網頁。之所以我說webview功能強大是因為它和js的交互非常方便,很簡單就可以實現。
2、webview能做什麼?
①webView可以利用html做界面布局,雖然目前還比較少人這么使用,不過我相信當一些客戶端需要復雜的圖文(圖文都是動態生成)混排的時候它肯定是個不錯的選擇。
②直接顯示網頁,這功能當然也是它最基本的功能。
③和js交互。(如果你的js基礎比java基礎好的話那麼採用這種方式做一些復雜的處理是個不錯的選擇)。
3、如何使用webview?
這里直接用一個svn上取下的demo,先上demo後講解。demo的結構圖如下:
WebViewDemo.java
package com.google.android.webviewdemo;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
/**
* Demonstrates how to embed a WebView in your activity. Also demonstrates how
* to have javascript in the WebView call into the activity, and how the activity
* can invoke javascript.
* <p>
* In this example, clicking on the android in the WebView will result in a call into
* the activities code in {@link DemoJavaScriptInterface#clickOnAndroid()}. This code
* will turn around and invoke javascript using the {@link WebView#loadUrl(String)}
* method.
* <p>
* Obviously all of this could have been accomplished without calling into the activity
* and then back into javascript, but this code is intended to show how to set up the
* code paths for this sort of communication.
*
*/
public class WebViewDemo extends Activity {
private static final String LOG_TAG = "WebViewDemo";
private WebView mWebView;
private Handler mHandler = new Handler();
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);
mWebView.setWebChromeClient(new MyWebChromeClient());
mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");
mWebView.loadUrl("file:///android_asset/demo.html");
}
final class DemoJavaScriptInterface {
DemoJavaScriptInterface() {
}
/**
* This is not called on the UI thread. Post a runnable to invoke
* loadUrl on the UI thread.
*/
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:wave()");
}
});
}
}
/**
* Provides a hook for calling "alert" from javascript. Useful for
* debugging your javascript.
*/
final class MyWebChromeClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
Log.d(LOG_TAG, message);
result.confirm();
return true;
}
}
}
demo.html
<html>
<script language="javascript">
/* This function is invoked by the activity */
function wave() {
alert("1");
document.getElementById("droid").src="android_waving.png";
alert("2");
}
</script>
<body>
<!-- Calls into the javascript interface for the activity -->
<a onClick="window.demo.clickOnAndroid()"><div style="width:80px;
margin:0px auto;
padding:10px;
text-align:center;
border:2px solid #202020;" >
<img id="droid" src="android_normal.png"/><br>
Click me!
</div></a>
</body>
</html>
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/intro"
android:padding="4dip"
android:textSize="16sp"
/>
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
/>
</LinearLayout>
4、如何交互?
①android如何調用js。
調用 形式:
mWebView.loadUrl("javascript:wave()");
其中wave()是js中的一個方法,當然你可以把這個方法改成其他的方法,也就是android調用其他的方法。
②js如何調用android。
調用形式:
<a onClick="window.demo.clickOnAndroid()">
代碼中的「demo」是在android中指定的調用名稱,即
mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");
代碼中的clickOnAndroid()是「demo」對應的對象:new DemoJavaScriptInterface() 中的一個方法。
③雙向交互。
當然是把前面的兩種方式組合一下就可以了。
5、講解demo。
現在你一定了解了android和js的交互了。是時候分析一些demo了,根據上面講的你也應該比較清楚了。具體交互流程如下:
①點擊圖片,則在js端直接調用android上的方法clickOnAndroid();
②clickOnAndroid()方法(利用線程)調用js的方法。
③被②調用的js直接控制html。
個人總結:利用webView的這種方式在有些時候UI布局就可以轉成相應的html代碼編寫了,而html布局樣式之類有DW這樣強大的工具,而且網上很多源碼,很多代碼片。在UI和視覺效果上就會節省很多時間,重復發明輪子沒有任何意義。
⑷ Android-webview和js腳本語言交互的時候怎麼獲取js方法的返回值
您好,很高興能幫助您
Android中webview和js之間的交互
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>,
即可實現調用
你的採納是我前進的動力,
記得好評和採納,答題不易,互相幫助,
⑸ 安卓開發webview與js交互
@JavascriptInterface public String getValue(final String str) { if(str.equals("test")){ //java中不能用==號 return "a"; } return "b";}
⑹ wkwebview與js交互非同步怎麼辦
//用一個對象保存oc返回來的鍵與值 var info = {}; //調用oc原生方法,(注意這是一個非同步調用) window.webkit.messageHandlers.getTicket.postMessage(null); //oc那邊收到通知成功後,會去執行js里的一個全局函數,並把前端JS需要的值以鍵值對的方式帶給前端 function getMessage(key, value) { console.log(`${key}=${value}`); info[key] = value; }。
交互(jiāo hù),漢語詞語,意為:互相;彼此。在互聯網中,當計算機播放某多媒體程序的時候,編程人員可以發出指令控制該程序的運行,而不是程序單方面執行下去,程序在接受到編程人員相應的指令後而相應地做出反應,這一過程及行為,我們稱之為交互。
⑺ 如何實現WebView和js頁面的交互
通過webView.addJavascriptInterface(Object, "name");方法可以實現,其中參數Object表示的是需要與js交互的Java代碼所在的類的類名,而參數name則表示js頁面用來調用Java代碼時的別名.簡單來說就是將Java對象和Js對象進行綁定,通過別名可以找到與之關聯的Java對象.例如:
⑻ webview和js交互為什麼用cordova
一、項目背景
1、項目需要支持hybrid應用,所以部分提供h5調用的通用js保存在客戶端本地。優點有:訪問速度快和無需額外數據流量。
2、項目主頁都是h5形式,採用vue框架,支持離線緩存
3、使用CordovaWebView載入h5應用。
⑼ 如何處理webview與js之間交互
先說說android中webview控制項如何調用javascript代碼?
其實android中webview控制項調用javascript方法還是比較簡單,只需要設置webview支持javascript,然後用loadUrl調用javascript方法即可。
javascript調用android中自定義好的方法(例如: 分享)
需要給webview控制項添加addJavascriptInterface方法,而這個就類似於初始化一個類對象,以及類對象里的方法。這個類對象就提供給javascript來調用。
javascript調用自定義好的JShare對象。
效果圖
⑽ web前端的javascript主要用於交互嗎
web前端的javascript主要用於用戶交互以及事件處理。主要作用如下:
JavaScript常用來完成以下任務
1、嵌入動態文本於HTML頁面
2、對瀏覽器事件作出響應
3、讀寫HTML元素
4、在數據被提交到伺服器之前驗證數據
5、檢測訪客的瀏覽器信息
6、控制cookies,包括創建和修改等
javascript的內部組成:
一個完整的 JavaScript 實現是由以下 3 個不同部分組成的: