此接口用于跨包打开 mPaaS 应用内的其他 H5 应用(离线包)。
AlipayJSBridge.call('startApp', {
appId: '90000000',
param: {
url: '/index.html'
}
}, function(result) {
// noop
});
// 注意,如果要打开多个 App 实例:
// 请将 appClearTop 和 startMultApp 都放在 param 里
AlipayJSBridge.call('startApp', {
appId: '90000000',
param: {
url: location.href,
appClearTop: false,
startMultApp: 'YES' // 注意这个值是 YES,而不是 bool 类型
}
}, function(result) {
// noop
});
打开标题栏透明的应用:
<h1>点击按钮查看效果</h1>
<a href="javascript:void(0)" class="btn dream">打开心愿储蓄</a>
<script>
function ready(callback) {
// 如果 jsbridge 已经注入则直接调用
if (window.AlipayJSBridge) {
callback && callback();
} else {
// 如果没有注入则监听注入的事件
document.addEventListener('AlipayJSBridgeReady', callback, false);
}
}
ready(function(){
document.querySelector('.dream').addEventListener('click', function() {
AlipayJSBridge.call('startApp', {
appId: '20000981',
param: {
url: '/www/dream-create.html',
// 启动参数传入
canPullDown: true,
transparentTitle: 'auto'
}
}, function(result) {
// noop
});
});
});
</script>
打开新应用并关闭当前应用:
<h1>点击按钮打开新应用,当前应用会被关闭</h1>
<a href="javascript:void(0)" class="btn forest">打开蚂蚁森林</a>
<script>
function ready(callback) {
// 如果 jsbridge 已经注入则直接调用
if (window.AlipayJSBridge) {
callback && callback();
} else {
// 如果没有注入则监听注入的事件
document.addEventListener('AlipayJSBridgeReady', callback, false);
}
}
ready(function() {
document.querySelector('.forest').addEventListener('click', function() {
AlipayJSBridge.call('startApp', {
appId: '60000002',
// 不传入 URL,就会使用 App 默认配置的 URL
param: {
transparentTitle: 'auto'
},
closeCurrentApp: true
}, function(result) {
// noop
});
});
});
</script>
默认只开一个 appId 实例:
<h1>尝试再打开当前页面,先退出当前应用,然后再次打开</h1>
<a href="javascript:void(0)" class="btn self">打开当前页面</a>
<script>
function ready(callback) {
// 如果 jsbridge 已经注入则直接调用
if (window.AlipayJSBridge) {
callback && callback();
} else {
// 如果没有注入则监听注入的事件
document.addEventListener('AlipayJSBridgeReady', callback, false);
}
}
ready(function(){
document.querySelector('.self').addEventListener('click', function() {
AlipayJSBridge.call('startApp', {
// 当前页面打开的时候,是通过通用应用 20000067 打开,
// 因此在此 startApp 的时候,就会把其他的 20000067 关闭
// 所以这个时候其实还是只有一个当前页面打开
appId: '20000067',
param: {
url: location.href,
}
}, function(result) {
// noop
});
});
});
</script>
同一个 appId 多开:
<h1>打开多个相同 appId 的应用</h1>
<a href="javascript:void(0)" class="btn multi">再开启一个应用</a>
<script>
function ready(callback) {
// 如果 jsbridge 已经注入则直接调用
if (window.AlipayJSBridge) {
callback && callback();
} else {
// 如果没有注入则监听注入的事件
document.addEventListener('AlipayJSBridgeReady', callback, false);
}
}
ready(function() {
document.querySelector('.multi').addEventListener('click', function() {
AlipayJSBridge.call('startApp', {
appId: '90000000',
param: {
url: '/index.html',
appClearTop: false,
startMultApp: 'YES' // 注意这个值是 YES,而不是 bool 类型
}
}, function(result) {
// noop
});
});
});
</script>
AlipayJSBridge.call('startApp', {
appId, param: {}, closeCurrentApp
}, fn)
名称 | 类型 | 描述 | 必选 | 默认值 | 基线 |
---|---|---|---|---|---|
appId | string | 离线包 ID。 | Y | “” | - |
param | dictionary | 启动应用的参数, 由具体业务应用定义。 如打开离线包时需指定 URL,请在 param 中配置。 若要运行多个实例,参见下方 注意事项。 | N | value 值支持字符、 bool、int、double | - |
closeCurrentApp | bool | 是否先退出当前 App 再启动新的 App。适用于页面用作中转页的情况。 | N | - | >10.1.60 |
fn | function | 调用失败后的回调函数。 | N | - | - |
错误码 | 描述 |
---|---|
10 | 指定 appId 无效 |
11 | 启动 App 失败 |
startApp
是用来打开 App 的,因此其定位是 App 级别,在这一点上与 pushWindow
不同。startApp
打开 App 时,会进行一个类似重启的操作。也就是说不会出现同时运行两个具有相同 appId 的实例的情况。appClearTop=false&startMultApp=YES
选项。
在文档使用中是否遇到以下问题
更多建议
匿名提交