Edge浏览器调用IE兼容模式弹窗跨内核通信失败问题求助
可行解决思路
以下方案均适配Edge原生父页 <> IE兼容模式弹窗的跨内核隔离场景:
- 方案1:使用微软官方Edge IE模式专属通信接口
微软为企业级IE模式场景提供了原生跨内核通信能力,你可以通过组策略开启Allow communication between Microsoft Edge and Internet Explorer配置项后:- Edge侧父页调用
window.external.notify(<结构化数据>)向IE模式页面发送数据 - IE模式弹窗侧通过监听
onmessage事件接收数据,回传则调用IE侧的window.external.notify,Edge侧监听message事件即可
该方案无额外开发成本,仅需企业组策略侧开通对应权限,支持大体积数据传输,是首选方案。
- Edge侧父页调用
- 方案2:后端临时存储中转
父页将待传输的结构化数据先通过POST请求上传至后端临时存储(可设置5分钟自动过期的缓存策略),生成唯一的request_id,将request_id通过query string传递给IE模式弹窗,弹窗加载完成后携带request_id向后端请求对应数据即可。
该方案适配任意大小的数据,仅需后端新增2个简单的缓存读写接口,无需改动客户端权限配置。 - 方案3:本地轻量HTTP服务中转
若无法修改后端,可开发一个极简的本地单文件HTTP服务(用Go/Python/Node.js均可,打包成单exe后可通过组策略静默部署到所有终端),提供两个接口:POST /save:接收父页上传的数据,返回唯一idGET /get/<id>:返回对应id存储的数据,访问后自动销毁
父页传数据时先调用/save接口,把返回的id通过query string传给弹窗,弹窗加载后调用/get接口拉取数据即可。
- 方案4:剪贴板中转(仅适用于数据传输触发时机为用户主动操作的场景)
若上述方案均无法落地,可在用户触发打开弹窗的操作时,通过navigator.clipboard.write()将数据写入系统剪贴板(企业组策略可配置对应站点的剪贴板访问权限,避免用户授权提示),弹窗加载完成后调用IE兼容的剪贴板读取APIwindow.clipboardData.getData("Text")读取数据即可。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

