You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Deep Linking在Chrome环境下运行异常问题咨询

原因确认

你遇到的现象确实是Chrome唤起应用后脚本执行被中止导致的:
Chrome在通过window.open触发自定义URI Scheme打开第三方应用后,会将当前标签页切为后台状态,同时默认重置当前页面上下文,未执行完成的Ajax请求、异步逻辑都会被直接挂起/终止。你提到的「提前退出Chrome反而流程正常」,是因为主动切走应用时Chrome还未触发默认的页面重置逻辑,后台JS可以继续保持运行。

小提示:你当前示例中的window.open ("example: // yyyy");包含多余空格,实际生产环境要修正为window.open("example://yyyy");避免部分浏览器识别异常;你配置的intent-filter逻辑正常,无需修改。

修复方案
  • 方案1:调整代码执行顺序,优先发请求再唤起应用
    将所有需要执行的Ajax请求逻辑放到window.open之前执行,确认请求已经成功发送到服务端后,再触发应用唤起逻辑,避免请求被Chrome中止。
async function submitForm(formData) {
  // 1. 先发起所有需要的ajax请求、初始化轮询逻辑
  await fetch('/your-submit-api', { method: 'POST', body: formData })
  // 2. 请求发送完成后再唤起应用
  window.open('example://yyyy')
}
  • 方案2:用隐藏iframe唤起应用,替代window.open
    window.open会触发标签页上下文切换,而通过隐藏iframe加载自定义URI Scheme不会修改当前页面状态,JS可以正常执行:
const iframe = document.createElement('iframe')
iframe.style.display = 'none'
iframe.src = 'example://yyyy'
document.body.appendChild(iframe)
// 唤起完成后移除iframe
setTimeout(() => iframe.remove(), 1000)
  • 方案3:阻止表单默认提交行为
    如果使用原生表单提交逻辑,未阻止默认事件会触发页面自动刷新,和唤起应用的行为叠加会加快页面重置。给表单提交事件添加阻止默认逻辑:
document.querySelector('#your-form').addEventListener('submit', (e) => {
  // 阻止原生表单提交的页面跳转
  e.preventDefault()
  // 执行自定义的请求、唤起应用逻辑
})
  • 方案4:使用应用回调跳转替代页面等待
    如果需要等待应用内流程完成后获取结果,可以让应用处理完逻辑后再通过自定义URI Scheme跳转回Chrome的指定结果页,传递处理状态,不需要在原页面持续挂起等待。

内容的提问来源于stack exchange,提问作者user1644419

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:30:00