APIs (v0.0.1)
由开源书源定义的一组特殊API, 由宿主实现.
info
公开有关环境信息的对象, 它具有以下属性:
version: String
接口版本号(当前版本号0.0.1)
platform: Object
os: String
系统
osVersion: String
系统版本
console.log(info.version); // 输出: 0.0.1
console.log(info.platform.os); // 输出: ios
console.log(info.platform.osVersion); // 输出: Version 16.4 (Build 20E247)
Date.parseWithFormat(text, format)
日期解析
text: String
需要解析的文本
format: String
日期格式
var value = Date.parseWithFormat('2003-12-20 10:25', 'yyyy-MM-dd HH:mm');
console.log(value); // 输出: 2003-12-20 10:25:00.000
UserAgents
用户代理
- android: String
- iphone: String
- ipad: String
- macos: String
- windows: String
- linux: String
console.log(UserAgents.android); // 输出: Mozilla/5.0 (Android 12; Mobile; rv:97.0) Gecko/97.0 Firefox/97.0
console.log(UserAgents.iphone); // 输出: Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
console.log(UserAgents.ipad); // 输出: Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
console.log(UserAgents.macos); // 输出: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_14; rv:97.0) Gecko/20110101 Firefox/97.0
console.log(UserAgents.windows); // 输出: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
console.log(UserAgents.linux); // 输出: Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0
Clipboard
剪切板
set(text)
设置剪切板内容
get(): String
获取剪切板内容
注意: 仅支持异步请求.
await Clipboard.set('剪切板内容'); // 设置剪切板内容
console.log(await Clipboard.get()); // 输出: 剪切板内容
Storage
存储
put(key, value)
保存记录
get(key)
获取记录
delete(key)
删除记录
keys()
获取所有 keys
exists(key)
判断记录是否存在
注意: 仅支持异步请求.
await Storage.put('a', 0);
await Storage.put('b', 1);
await Storage.put('c', 2);
console.log(await Storage.get('a')); // 输出: 0
console.log(await Storage.delete('a')); // 输出: true
console.log(await Storage.delete('d')); // 输出: false
console.log(await Storage.keys()); // 输出: [b, c]
console.log(await Storage.exists('a')); // 输出: false
console.log(await Storage.exists('b')); // 输出: true
fetch(url, options)
发起网络请求
url: String
请求地址
options: Object
method?: String
请求方式:
GET
POST
HEAD
PUT
DELETE
PATCH
OPTIONS
TRACE
CONNECT
默认:
GET
headers?: Object
请求头, 例如:
{ 'name1': 'value1', 'name2': 'value2' }
responseType?: String
返回类型:
text (默认值)
文本类型
bytes
二进制类型
timeout?: Number
超时时间, 单位: 毫秒
data?: String | Map | Uint8Array
与请求一起发送的数据,通常用于
POST
和PUT
请求。
响应对象具有以下属性:
status: Number
请求的响应状态
headers: Object
响应头
data: String | Uint8Array | null
响应数据. 具体类型取决于
responseType
的值finalUrl: String
重定向后的最终 URL
注意: 仅支持异步请求.
chardet(data)
字符集检测
- data: Uint8Array
var arr = new Uint8Array([229, 188, 128, 230, 186, 144, 228, 185, 166, 230, 186, 144]);
console.log(chardet(arr)); // 输出: UTF-8
Codec
编解码器
encode(text, charset) Uint8Array
编码
decode(text, charset) String
解码
encodeURIComponent(text, charset) String
URL 编码
decodeURIComponent(text, charset) String
URL 解码
var result = await Codec.encode('https://baidu.com/s?wd=开源书源', 'gbk');
console.log(result); // 输出: [104, 116, 116, 112, 115, 58, 47, 47, 98, 97, 105, 100, 117, 46, 99, 111, 109, 47, 115, 63, 119, 100, 61, 191, 170, 212, 180, 202, 233, 212, 180]
console.log(await Codec.decode(result, 'gbk')); // 输出: https://baidu.com/s?wd=开源书源
var result = await Codec.encodeURIComponent('https://baidu.com/s?wd=开源书源', 'gbk');
console.log(result); // 输出: https%3A%2F%2Fbaidu.com%2Fs%3Fwd%3D%BF%AA%D4%B4%CA%E9%D4%B4
console.log(await Codec.decodeURIComponent(result, 'gbk')); // 输出: https://baidu.com/s?wd=开源书源
注意: 仅支持异步请求.
Document
用于解析网页.
Example:
new Document(text)
querySelector()
参考: https://developer.mozilla.org/zh-CN/docs/Web/API/Document/querySelector
querySelectorAll()
参考: https://developer.mozilla.org/zh-CN/docs/Web/API/Document/querySelectorAll
queryXpath()
类似 querySelectorAll
, 但是使用 xpath
语言.
text
获取当前节点下的文本
Example:
document.querySelector('#info > h1').text
ownText
仅获取当前节点的文本
Example:
document.querySelector('#info > h1').ownText
outerHtml
参考: https://developer.mozilla.org/zh-CN/docs/Web/API/Element/outerHTML
Example:
document.querySelector('#info > h1').outerHtml
innerHtml
参考: https://developer.mozilla.org/zh-CN/docs/Web/API/Element/innerHTML
Example:
document.querySelector('#info > h1').innerHtml
Uri
Example:
Uri.parse('https://example.com');
toString()
var uri = Uri.parse('https://example.com');
console.log(uri.toString()); // 输出: https://example.com
replace()
Example:
var uri = Uri.parse('https://example.com').replace({
host: 'example2.com',
path: 'p',
});
console.log(uri.toString()); // 输出: https://example2.com/p
resolve()
var uri = Uri.parse('https://example.com/p').resolve('p2/icon.png');
console.log(uri.toString()); // 输出: https://example.com/p2/icon.png
scheme
var uri = Uri.parse('https://example.com');
console.log(uri.scheme); // 输出: https
authority
var uri = Uri.parse('https://example.com');
console.log(uri.authority); // 输出: example.com
userInfo
var uri = Uri.parse('https://example.com');
console.log(uri.userInfo); // 输出:
host
var uri = Uri.parse('https://example.com');
console.log(uri.host); // 输出: example.com
port
var uri = Uri.parse('https://example.com');
console.log(uri.port); // 输出: 443
path
var uri = Uri.parse('https://example.com/p');
console.log(uri.path); // 输出: /p
pathSegments
var uri = Uri.parse('https://example.com/p/p2/p3');
console.log(uri.pathSegments); // 输出: ["p", "p2", "p3"]
query
var uri = Uri.parse('https://example.com/p?s=keyword');
console.log(uri.query); // 输出: s=keyword
queryParameters
var uri = Uri.parse('https://example.com/p?s=keyword');
console.log(uri.queryParameters); // 输出: {"s": "keyword"}
queryParametersAll
var uri = Uri.parse('https://example.com/p?s=keyword');
console.log(uri.queryParametersAll); // 输出: {"s": ["keyword"]}
fragment
var uri = Uri.parse('https://example.com/p?s=keyword#uris');
console.log(uri.fragment); // 输出: uris
UI
调用宿主页面
toast(text)
提示信息
alert(text)
提示对话框
confirm(text, single, options)
确认对话框
prompt(text)
输入对话框
configure(inputs)
配置页面