| java.lang.Object | |
| ↳ | com.tencent.smtt.sdk.JsValue |
每个 JsValue 实例是对一个 JavaScript 值的引用,用于对 JavaScript 引擎返回的不特定数据类型的判断以及与
Java 数据类型的转换。
| Protected Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| JsValue(JsContext context, IX5JsValue value) | |||||||||||
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| JsValue |
call(Object... args)
如果是 JavaScript 函数,则将输入参数一一转为对应类型的 JavaScript 数据,并调用该 JavaScript
函数;否则,直接返回
null。
可用于 JavaScript 调用 Java 函数的回调函数。如申明了 JavascriptInterface 接口:
则可在 JavaScript 中调用:
| ||||||||||
| JsValue |
construct(Object... args)
如果是 JavaScript 函数,则将输入参数一一转为对应类型的 JavaScript 数据,并作为 构造函数 调用该
JavaScript 函数;否则,直接返回
null。
用法与 call(Object...) 一致,返回值为该函数构造的 JavaScript 对象的 JsValue 封装。 | ||||||||||
| JsContext | context() | ||||||||||
| boolean |
isArray()
是否是 JavaScript 数组。
| ||||||||||
| boolean |
isArrayBufferOrArrayBufferView()
是否是 JavaScript
ArrayBuffer 或 ArrayBufferView 对象。
| ||||||||||
| boolean |
isBoolean()
是否是 JavaScript 布尔值。
| ||||||||||
| boolean |
isFunction()
是否是 JavaScript 函数。
| ||||||||||
| boolean |
isInteger()
是否是 JavaScript 整型。
| ||||||||||
| boolean |
isJavascriptInterface()
是否是通过
addJavascriptInterface(Object, String) 注入的 Java 对象。
| ||||||||||
| boolean |
isNull()
是否是 JavaScript
null。
| ||||||||||
| boolean |
isNumber()
是否是 JavaScript 数值。
| ||||||||||
| boolean |
isObject()
是否是 JavaScript 对象。
| ||||||||||
| boolean |
isPromise()
是否是 JavaScript Promise。
| ||||||||||
| boolean |
isString()
是否是 JavaScript 字符串。
| ||||||||||
| boolean |
isUndefined()
是否是 JavaScript
undefined。
| ||||||||||
| void |
reject(Object value)
如果是 JavaScript Promise,则将
value 转为对应类型的 JavaScript 数据,并 执行
Promise 失败回调。 | ||||||||||
| void |
resolve(Object value)
如果是 JavaScript Promise,则将
value 转为对应类型的 JavaScript 数据,并 执行
Promise 成功回调。 | ||||||||||
| boolean |
toBoolean()
转换为 Java 布尔值。
| ||||||||||
| ByteBuffer |
toByteBuffer()
转换为 Java ByteBuffer 对象。
| ||||||||||
| int |
toInteger()
转换为 Java 整型。
| ||||||||||
| Object |
toJavascriptInterface()
返回 Java 对象。
| ||||||||||
| Number |
toNumber()
转换为 Java 数值。
| ||||||||||
| <T> T |
toObject(Class<T> clazz)
转换为指定 Java 类型的对象,调用该对象的 Java 方法会映射为调用潜在 JavaScript 对象的 JavaScript 方法。
如,JavaScript 代码中申明了对象:
则可在 Java 代码中声明签名一致的类型:
并直接以 Java 签名方式使用:
| ||||||||||
| String |
toString()
转换为 Java 字符串。
| ||||||||||
| Protected Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| static IX5JsValue.JsValueFactory | factory() | ||||||||||
|
[Expand]
Inherited Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
| |||||||||||
如果是 JavaScript 函数,则将输入参数一一转为对应类型的 JavaScript 数据,并调用该 JavaScript
函数;否则,直接返回 null。
可用于 JavaScript 调用 Java 函数的回调函数。如申明了 JavascriptInterface 接口:
public class AsyncTaskSample {
private JsValue callback;
@JavascriptInterface
public void doTask(String data, JsValue callback) {
mCallback = callback;
}
private void onCompleted() {
if (mCallback != null && mCallback.isFunction()) {
String s = mCallback.call("321");
}
}
}
则可在 JavaScript 中调用:
sample.doTask("123", function(result) { console.log(result); });
| args | 函数的输入参数 |
|---|
null。
如果是 JavaScript 函数,则将输入参数一一转为对应类型的 JavaScript 数据,并作为 构造函数 调用该
JavaScript 函数;否则,直接返回 null。
用法与 call(Object...) 一致,返回值为该函数构造的 JavaScript 对象的 JsValue 封装。
| args | 函数的输入参数 |
|---|
null。
是否是 JavaScript 数组。
是否是 JavaScript ArrayBuffer 或 ArrayBufferView 对象。
是否是 JavaScript 布尔值。
是否是 JavaScript 函数。
是否是 JavaScript 整型。
是否是 JavaScript null。
是否是 JavaScript 数值。
是否是 JavaScript 对象。
是否是 JavaScript Promise。
是否是 JavaScript 字符串。
是否是 JavaScript undefined。
如果是 JavaScript Promise,则将 value 转为对应类型的 JavaScript 数据,并 执行
Promise 失败回调。
| value | 传给 Promise 执行失败回调的参数 |
|---|
如果是 JavaScript Promise,则将 value 转为对应类型的 JavaScript 数据,并 执行
Promise 成功回调。
| value | 传给 Promise 执行成功回调的参数 |
|---|
转换为 Java 布尔值。
false。
转换为 Java ByteBuffer 对象。
ArrayBuffer 或 ArrayBufferView
对象,则返回对应的 Java ByteBuffer 对象;否则,返回 null。
转换为 Java 整型。
0。
返回 Java 对象。
addJavascriptInterface(Object, String) 注入的 Java
对象,则返回该对象;否则,返回 null。
转换为 Java 数值。
null。
转换为指定 Java 类型的对象,调用该对象的 Java 方法会映射为调用潜在 JavaScript 对象的 JavaScript 方法。 如,JavaScript 代码中申明了对象:
var sample = {};
sample.empty = function() { console.log("call sample#empty"); }
sample.primitive = function(c) { console.log("call sample#primitive", c); return 1; }
sample.object = function(o) { console.log("call sample#object", o); return "123"; }
则可在 Java 代码中声明签名一致的类型:
public interface Sample {
void empty();
byte primitive(char c);
String object(Object o);
}
并直接以 Java 签名方式使用:
context.evaluateScriptAsync("sample", new ValueCallback() {
@Override
public void onReceiveValue(JsValue value) {
if (value != null && value.isObject()) {
Sample sample = value.toObject(Sample.class);
sample.empty();
byte b = sample.primitive('a'); // b is 1
String s = sample.object(null); // s is "123"
}
}
}, null);
| clazz | 指定转换的目标 Java Interface。 |
|---|
转换为 Java 字符串。
null。