Я разрабатываю надстройку Microsoft Word в Office JS API. Надстройка позволяет автору документа или редактору выбирать области текста и создавать теги, которые связывают области с индексными записями. В тегах скрыты строки Oo xml. На втором этапе выполняется перебор тела документа (также сносок) и создание индекса (с заполнителями номеров страниц) в конце документа. Последний шаг реализован в VSTO (C#), который снова просматривает документ и разрешает заполнители номеров страниц с фактическими номерами страниц (поскольку JS API не имеет к ним доступа).
Я использую Word 2016 (версия 1908, сборка 11929.20114 «нажми и работай») - наша организация использует Office 365 и набор требований Word JS API 1.1. Код html, js и css размещен на веб-сервере - в каталоге на диске C пользователя есть файл манифеста xml: диск, который указывает на URL-адрес веб-сервера и который C: расположение каталога добавляется в список Word> Параметры> Центр управления безопасностью> Параметры Центра управления безопасностью> Каталоги надежных надстроек как \\localhost\C$\directory name
. Затем надстройка загружается из списка «Надстройки»> «Общая папка» вкладки «Разработчик». Пояснение: вот как выглядит файл манифеста. xml:
<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="TaskPaneApp">
<Id>e69eaa23-19f3-48fd-9f8e-694eb013e434</Id>
<Version>1.0.0.0</Version>
<ProviderName>Microsoft</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="PSU Indexing V2" />
<Description DefaultValue="Manage and create document indexes." />
<Hosts>
<Host Name="Document"/>
</Hosts>
<DefaultSettings>
<SourceLocation DefaultValue="https://psuindexer.la.psu.edu/PSUIndexerV2/home.html" />
</DefaultSettings>
<Permissions>ReadWriteDocument</Permissions>
</OfficeApp>
Одна проблема, с которой я столкнулся, заключается в том, что Word кэширует очень старую версию JS API-кода. Я зашел в Inte rnet Explorer (версия 11.592.18362.0) и изменил Inte rnet Параметры> Общие> История просмотра> Настройки> и указал «Проверять новые версии сохраненных страниц: каждый раз, когда я захожу на веб-страницу». По совету https://github.com/OfficeDev/office-js/issues/632 я добавил мета-теги http-эквивалента к HTML следующим образом:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
Но поведение страннее, чем который. Я могу установить надстройку, изменить html и javascript на веб-сайте и нажать кнопку «Перезагрузить» в надстройке, и страницы обновятся, а код обновится. Но если я закрою документ и снова открою его, у него, похоже, будет кешированная версия очень старого кода (ie. От вчерашнего дня). Перезагрузка не решает проблему - единственное, что я могу сделать, это: 1) закрыть надстройку 2) удалить местоположение из надежных каталогов надстроек 3) закрыть Word и снова открыть его 4) добавить местоположение обратно в доверенное снова каталоги надстроек 5) закройте Word и снова откройте его 6) добавьте надстройку обратно из Developer> Add-ins> Shared Folder
Затем она снова будет работать с последним кодом, просто отлично, пока я не закрою слово «документ», после чего после повторного открытия оно снова имеет вчерашнюю версию.
Кто-нибудь может объяснить, что здесь происходит, или как я могу это исправить? Нынешняя ситуация была бы для меня неприемлемой, если бы я был конечным пользователем.