页面上下文
获取 H5 容器栈
功能说明
用于获取当前所有打开的 H5 容器。
功能接口
TMFJSBridge.invoke('getContainerStack', {}, callback)
入参 | 类型 | 描述 | 必选 | 默认值 |
---|---|---|---|---|
callback | function | 返回值回调函数 | Y | / |
出参 | 类型 | 描述 |
---|---|---|
containerStack | string | H5 容器栈,格式如下: [ { containerId: id_0, url: '...', }, // 容器 0 { containerId: id_1, url: '...', }, // 容器 1 { containerId: id_2, url: '...', }, // 容器 2 ... { containerId: id_n, // integer,容器 ID url: '...', // string,容器 URL }, // 容器 N ] |
代码示例
<div>
<button onclick='tmf_getContainerStack();'>点击获取 H5 容器栈</button>
<script>
function tmf_getContainerStack() {
TMFJSBridge.invoke('getContainerStack', {
}, function(res) {
/* 格式如下:
* [
* { containerId: id_0, url: '...', }, // 容器 0
* { containerId: id_1, url: '...', }, // 容器 1
* { containerId: id_2, url: '...', }, // 容器 2
* // ...
* { // 容器 N
* containerId: id_n, // integer,容器 ID
* url: '...', // string,容器 URL
* }, // 容器 N
* ]
*/
containerStack : res.containerStack, // array,H5 容器栈
});
}
</script>
</div>
在新的 H5 容器打开页面
功能说明
用于在新的 H5 容器打开页面。
此 JSAPI 为 UI 相关。
Android:具体实现在 TMFDemo 中。
功能接口
TMFJSBridge.invoke('openContainer', {url,params:{}}, callback)
入参 | 类型 | 描述 | 必选 | 默认值 |
---|---|---|---|---|
callback | function | 返回值回调函数 | Y | / |
url | string | 要打开的页面 URL 地址 | Y | / |
params | dictionary | 可选参数 | N | {} |
params.defaultTitle | String | 默认标题 | N | / |
params.showsContainerTitle | bool | 是否展示页面标题 | N | false |
代码示例
<div>
<button onclick='tmf_openContainer(url);'>点击在新的 H5 容器打开页面</button>
<script>
function tmf_openContainer(url) {
TMFJSBridge.invoke('openContainer', {
url : url ? url : window.location.href, // string,必选,URL 地址
params : { // dictionary,可选,参数
defaultTitle : 'Default Title', // string,可选,默认标题
showsContainerTitle : true, // bool,可选,是否展示页面标题
},
}, function (res) {
// callback
});
}
</script>
</div>
注意事项
在新的 H5 容器打开页面,是新创建 H5 容器并打开新页面,如果想完成替换当前页面的效果,请先调用
closeContainer
关闭当前 H5 容器。建议不要不断地创建新的 H5 容器,同时需要及时清除历史容器,保证性能。在新的 H5 容器打开页面,是网络异步加载,因此容器标题可能不是立刻加载完成。如果有交互需要,可以设置 defaultTitle 默认标题。
关闭当前 H5 容器
功能说明
用于关闭当前正在展示 H5 容器的页面。
功能接口
TMFJSBridge.invoke('closeContainer', {}, callback)
入参 | 类型 | 描述 | 必选 | 默认值 |
---|---|---|---|---|
callback | function | 返回值回调函数 | Y | / |
代码示例
<div>
<button onclick='tmf_closeContainer();'>点击关闭当前 H5 容器</button>
<script>
function tmf_closeContainer() {
TMFJSBridge.invoke('closeContainer', {
}, function (res) {
// callback
});
}
</script>
</div>
注意事项
关闭当前 H5 容器,仅关闭当前显示的那一个容器,如果需要关闭多个 H5 容器,请使用 closeContainers
接口。
关闭多个 H5 容器
功能说明
用于关闭多个存在的 H5 容器。
功能接口
TMFJSBridge.invoke('closeContainers', {containerIds}, callback)
入参 | 类型 | 描述 | 必选 | 默认值 |
---|---|---|---|---|
callback | function | 返回值回调函数 | Y | / |
containerIds | array | 关闭容器的 ID 数组集合 | Y | [] |
代码示例
<div>
<button onclick='tmf_closeContainers();'>点击关闭多个 H5 容器</button>
<script>
function tmf_closeContainers() {
TMFJSBridge.invoke('closeContainers', {
containerIds : [ 1, 2 ], // array,必选,需要关闭的 H5 容器 ID 的集合
}, function (res) {
// callback
});
}
</script>
</div>
注意事项
关闭多个 H5 容器,也可以完成关闭单个容器的功能。但如果仅关闭当前单个容器,推荐使用 closeContainer
接口。
应用安装判断
功能说明
用于判断其他应用是否安装。
功能接口
TMFJSBridge.invoke('isAppInstalled', {url_ios,packageName_android}, callback)
入参 | 类型 | 描述 | 必选 | 默认值 |
---|---|---|---|---|
callback | function | 返回值回调函数 | Y | / |
url_ios | string | iOS 应用的 URL 地址 | Y (iOS) | / |
packageName_android | String | Android 应用的包名 | Y (Android) | / |
出参 | 类型 | 描述 |
---|---|---|
url | string | 实际判断的 URL 地址 |
installed | bool | 是否安装了所判断的应用 |
代码示例
<div>
<button onclick='tmf_setPageInfo();'>点击判断其他应用是否安装</button>
<script>
function tmf_isAppInstalled() {
TMFJSBridge.invoke('isAppInstalled', {
url_ios : 'mqqsecure://', // string,必选(iOS)
packageName_android : 'com.tencent.mqqsecure' // string,必选(Android)
}, function (res) {
url : res.url, // string,实际判断的 URL 地址
installed : res.installed, // bool,是否安装了 app
});
}
</script>
</div>
注意事项
- 判断是否安装了三方的应用,需要针对平台传入必需的参数。iOS 需要 url_ios , Android 需要 packageName_android。
- 如果调试过程中发现无法获取到正确信息,可以根据回调中的 URL 参数来判断请求是否合理恰当。
启动其他应用
功能说明
用于启动其他三方应用。
功能接口
TMFJSBridge.invoke('openApp', {url_ios,url_android,packageName_android}, callback)
入参 | 类型 | 描述 | 必选 | 默认值 |
---|---|---|---|---|
callback | function | 返回值回调函数 | Y | / |
url_ios | string | iOS 应用的 URL 地址 | Y (iOS) | / |
url_android | string | Android 应用的 URL 地址 | Y (Android) | / |
packageName_android | String | Android 应用的包名 | Y (Android) | / |
出参 | 类型 | 描述 |
---|---|---|
url | string | 实际判断的 URL 地址 |
packageName | string | 实际打开的包名 |
error | integer | 错误码 |
错误码
错误码 | 描述 |
---|---|
-1 | 业务执行失败(Android) |
代码示例
<div>
<button onclick='tmf_openApp();'>点击启动其他应用</button>
<script>
function tmf_openApp() {
TMFJSBridge.invoke('openApp', {
url_ios : 'mqqsecure://', // string,必选(iOS)
url_android : 'mqqsecure://', // string,必选(Android)
packageName_android : 'com.tencent.mqqsecure' // string,必选(Android)
}, function (res) {
url : res.url, // string,实际打开的 URL 地址
packageName : res.packageName, // string,实际打开的包名
error : res.error, // integer,错误码
});
}
</script>
</div>
注意事项
- 打开其他应用,需要针对平台传入必需的参数。iOS 需要 url_ios,Android 需要 url_android。
- 如果调试过程中发现无法打开其他应用,可以根据回调中的 url / packageName 参数来判断请求是否合理恰当,也可以核对 error 对应的错误码来获取必要信息。