`context.document.body.insertOoxml` ломает документы, вылетает слово
Я знаю, что это не вопрос, но я был послан сюда Риком Киркхэмом отсюда, и, видимо, в SO спрашивается, как регистрировать ошибки для продуктов Microsoft:-p
Когда я использую insertOoxml
с параметром "заменить" Word добавит дополнительный контент в конце. Например, при использовании следующего кода в Script Lab с новым пустым документом Word:
$("#run").click(run);
function run() {
Word.run(function (context) {
var ooxml = context.document.body.getOoxml();
return context.sync().then(function () {
console.log(ooxml.value.length);
context.document.body.insertOoxml(ooxml.value, Word.InsertLocation.replace);
return context.sync();
});
});
}
Каждый раз, когда вы запускаете этот код, слово document получит дополнительный абзац в конце тела. Это становится безумным, когда документ заканчивается контролем содержимого: возьмите новый документ, вставьте новый элемент управления содержимым с расширенным текстом. Инициирование run
дублирует элемент управления содержимым и вставит его внутрь себя (таким образом, у вас есть два элемента управления содержимым, один из которых содержится в другом). Нажатие кнопки run
пару раз создаст много вложенных элементов управления контентом и замедлит Word для сканирования. Вставка элемента управления содержимым в виде простого текста и двойной запуск "run" приведут к падению слова (похоже, что разыменование нулевого указателя).
Это не проблема, связанная со Script Lab, но использование Script Lab - самый простой способ воспроизвести ее.
Версия Word: 1703, сборка 7967.2139, 2016 MSO (16.0.7927.1020) 32-разрядная.
Ожидаемое поведение: Word не вылетает и не вносит дополнительный контент.
Итак, давайте зададимся этим вопросом: как мне использовать полный документ insertOoxml(ooxml, 'replace')
не ломая мои документы?
1 ответ
В новой сборке я проверил, что Word не падает, но действительно добавлен дополнительный пустой абзац. Эта ошибка была устранена вчера, и исправление будет доступно в следующем месяце. Спасибо!