`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 не падает, но действительно добавлен дополнительный пустой абзац. Эта ошибка была устранена вчера, и исправление будет доступно в следующем месяце. Спасибо!

Другие вопросы по тегам