Microsoft Teams自定义应用登录后首次加载调用app.initialize()导致iframe空白的问题求助
Microsoft Teams自定义应用登录后首次加载调用app.initialize()导致iframe空白的问题求助
各位好,最近我碰到个棘手的Teams自定义应用问题,想请大家帮忙支支招:
我开发了一个自定义Teams应用,上传manifest文件后出现了很奇怪的现象:登录Teams后首次打开应用,UI会短暂显示一下然后直接变成空白;但如果手动按F5刷新页面,UI就正常显示,所有功能也都能正常用。可一旦我登出Teams再重新登录,这个问题就又会重演——标签页打开闪一下就空白,必须再手动刷新才能恢复。
这个问题是大概一周前才出现的,之前完全正常,登录后首次加载就能直接用。我调试后发现,问题似乎和Microsoft Teams JavaScript SDK里的app.initialize()调用有关:当代码执行这个方法时,对应的iframe像是被刷新或者卸载了,直接导致了空白屏。
我已经尝试了以下几种方法,但都没能解决问题:
- 把
app.initialize()包裹在DOMContentLoaded事件监听里,再加setTimeout延迟执行 - 调用
initialize()之前先检查app.isInitialized()的状态 - 等待
initialize()执行完成后再启动Angular的bootstrap流程 - 在获取
getContext()之后调用app.notifySuccess()
不管试哪种,只要不手动刷新标签页,iframe还是会被清空或者变成空白状态。
有没有人遇到过类似的情况?有没有可靠的方法来延迟或者合理编排app.initialize()的执行顺序,避免登录后出现这个问题?
以下是我的manifest文件示例:
{ "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.17/MicrosoftTeams.schema.json", "version": "1.0.1", "manifestVersion": "1.17", "id": "id", "name": { "short": "dev-test", "full": "dev test" }, "developer": { "name": "dev test", "websiteUrl": "websiteUrl", "privacyUrl": "privacy/", "termsOfUseUrl": "termsofuse/" }, "description": { "short": " dev test", "full": " dev test" }, "icons": { "outline": "outline.png", "color": "color.png" }, "accentColor": "#FFFFFF", "configurableTabs": [ { "configurationUrl": "configurationUrl", "canUpdateConfiguration": true, "scopes": [ "team" ], "supportedSharePointHosts": [ "sharePointFullPage" ] } ], "staticTabs": [ { "entityId": "entityId", "name": "test", "contentUrl": "contentUrl", "websiteUrl": "contentUrl", "scopes": [ "personal" ] }, { "entityId": "about", "scopes": [ "personal" ] } ], "webApplicationInfo": { "id": "id", "resource": "url" }, "localizationInfo": { "defaultLanguageTag": "ja-jp", "additionalLanguages": [ { "languageTag": "en-us", "file": "en-us.json" } ] }, "activities": { "activityTypes": [ { "type": "sendTest", "description": "Sending Test", "templateText": "send test" } ] } }
非常感谢大家的帮助和建议!
内容来源于stack exchange
相关产品推荐
相关产品推荐

