Контекст
В моей компании я отвечаю за разработку надстройки типа Content App только для PowerPoint. Надстройка построена с ASP.NET MVC (4.5) и AngularJS (1.6.8), а без проблем работает на клиенте PowerPoint (версия 1811, сборка 11029.20079).
Процедура испытаний Windows 10 64-битнаяChrome, v70.0.3538.110 (официальная сборка) (64-разрядная версия)Adblocker отключен
Манифест использован Этот манифест прошел средство проверки (https://www.npmjs.com/package/office-addin-validator).
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:type="ContentApp">
<Id>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</Id>
<Version>1.0.0.0</Version>
<ProviderName>My Company</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="Office Add-in name" />
<Description DefaultValue="Office Add-in description." />
<IconUrl DefaultValue="https://my-company.com/PluginLogo32.png" />
<HighResolutionIconUrl DefaultValue="https://my-company.com/PluginLogo64.png" />
<SupportUrl DefaultValue="https://my-company.com/support/" />
<AppDomains>
<AppDomain>my-company.com</AppDomain>
</AppDomains>
<Hosts>
<Host Name="Presentation" />
</Hosts>
<Requirements>
<Sets DefaultMinVersion="1.1">
<Set Name="Settings" />
</Sets>
<Methods>
<Method Name="Settings.get" />
<Method Name="Settings.set" />
<Method Name="Settings.remove" />
<Method Name="Settings.saveAsync" />
</Methods>
</Requirements>
<DefaultSettings>
<SourceLocation DefaultValue="https://my-company.com/plugin" />
<RequestedWidth>800</RequestedWidth>
<RequestedHeight>600</RequestedHeight>
</DefaultSettings>
<Permissions>ReadWriteDocument</Permissions>
<AllowSnapshot>true</AllowSnapshot>
</OfficeApp>
Используется инициализация Office
<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script>
<script type="text/javascript">
var init = function () {
App.tags = @Html.Raw(WorkContext.ActivPortalUserEntity.GetUserTagsAsJson());
App.languages = @Html.Raw(LocalizationManager.GetPortalJsonScript());
App.AP_URL = '@WorkContext.Uri';
App.V_KEY_FORM = '@AntiforgeryHelper.GetTokenName()';
App.V_VALUE_FORM = '@AntiforgeryHelper.GetToken()';
App.LabelURLSuffix = '';
App.URLSuffix = '@Model.TemplateDocument.URLSuffix';
App.IsDefaultUser = @Json.Encode(WorkContext.ActivPortalUserEntity.IsDefaultUser);
App.DashboardParametersQueryString = '@Html.Raw(Model.RenderContext.Request.GetParametersAsQuerystring())';
App.DashboardFilters = @Html.Raw(@JsonConvert.SerializeObject(Model.RenderContext.Request.GlobalCriteriaObjects));
App.ZoomFilters = @Html.Raw(@JsonConvert.SerializeObject(Model.RenderContext.Request.GlobalCriteriaIndexes));
App.WebPartFormatUseCorner = true;
App.DeportedToggleView = true;
App.ToggleViewMode = 'accordion';
App.searchPlaceHolderText = "@Resource("L_appSearchPlaceHolder_Text", "Portal")";
App.viewType = '';
App.documentRepository = '@ApplicationConfigService.ActivPortalServerConfig.DocumentsRepository';
App.WPAllowIconsHide = false;
App.Language = '@WorkContext.UserLanguage';
App.searchURL = [];
App.EditMode = false;
App.EditContentMode = false;
App.CATALOG_PROXY = '@WorkContext.Uri' + 'Portal/CatalogProvider';
App.RENDER_URL = '@WorkContext.Uri' + 'Portal/Render';
App.CHOICE_PROXY = '@WorkContext.Uri' + 'Portal/Render/TemplateRequest';
App.POST_TEMPLATE_PROXY = '@WorkContext.Uri' + 'Portal/Render/TemplateRequest';
App.moduleScripts = @Html.Raw(JsonConvert.SerializeObject(Model.GetPageScripts()));
App.moduleStylesSheets = @Html.Raw(@JsonConvert.SerializeObject(Model.GetPageStyles()));
App.angularClientContext = @Html.Raw(@Html.GetJsonClientContext());
App.scriptDebug = (typeof App.scriptDebug == undefined) ? false : App.scriptDebug;
App.ScriptsManager = new Activportal.UI.Resources({ scriptDebug: App.scriptDebug });
App.StylesManager = new Activportal.UI.Resources();
//Localization
MinimizeTip_Text = "@Resource("L_Minimize_Text", "Portal")";
ExpandTip_Text = "@Resource("L_Maximize_Text", "Portal")";
ErrorUpdatingPart_Text = "@Resource("L_InvalidURL_Text", "Portal")";
ConfirmRemoveGlobalFilter_Text = "@Resource("L_ConfirmRemoveGlobalFilter_Text", "Portal")";
WaitMessage_Text = "@Resource("L_WaitMessage_Text", "Portal")";
SessionEnd_Text = "@Resource("L_SessionEndMessage_Text", "Portal")";
window.addEvent('domready', function () {
App.isDashboardLoaded();
App.Start();
});
};
try {
if (Office) {
Office.initialize = init;
}
else {
console.log("Office.js is missing.");
if (!window.external.GetContext) {
init();
}
}
} catch (e) {
console.log(e);
}
</script>
Проблема
Просто повторюсь, надстройка без проблем работает на клиенте PowerPoint 2016 (см. Версию выше).Однако в PowerPoint Online я борюсь с проблемой : инициализация надстройки.
Когдавставка надстройки или перезагрузка страницы входа отображается с непрозрачностью следующим образом:
Затем через 2 секунды появляется это сообщение: «Извините...Мы не смогли запустить надстройку, потому что столкнулись с проблемой. Попробуйте позже или обратитесь к системному администратору. "Единственное сообщение, которое я получаю с консоли, это следующее:
- На данный момент я считаю 1 инициализацию.Когда я нажимаю «DÉMARRER», происходит то же самое (вторая инициализация).И потом, когда я нажимаю снова (третий инициал).Надстройка, наконец, работает как на клиенте PowerPoint.Вот как выглядит страница входа в систему.https://imgur.com/F9QNvvg
Итак, в Office Online это только третья инициализация, надстройка работает.Я заметил примерно одинаковое поведение для всех основных браузеров в их последней версии.
Вопрос
Что-то мне не хватает? Я открыт для любых предложений, я не нашел решения по этому конкретному вопросу.