`context.document.body.insertOoxml`打破文档,崩溃单词

时间:2017-05-08 21:46:21

标签: office-js scriptlab

我知道这不是一个问题,但是我被来自here的Rick Kirkham送到了这里,并且显然是在询问是否是为微软产品提交错误的方法:-p

当我将insertOoxml与'replace'参数一起使用时,Word将在末尾插入额外的内容。例如,在Script Lab中使用以下代码时,使用新的空单词文档:

$("#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();
        });
    });
}

每次触发此代码时,word文档都会在正文末尾获取一个附加段落。当文档在内容控件中结束时,它会变得更加疯狂:获取新文档,插入新的富文本内容控件。触发run将复制内容控件并将其插入其自身内部(因此您有两个内容控件,其中一个由另一个控件包含)。单击run几次将创建大量嵌套内容控件并使Word慢速爬行。插入纯文本内容控件并触发“运行”两次将导致单词崩溃(似乎是空指针取消引用)。

这不是与Script Lab相关的问题,但使用Script Lab是重现它的最简单方法。

Word版本:1703,build 7967.2139,2016 MSO(16.0.7927.1020)32位。

预期的行为:Word不会崩溃,也不会引入额外的内容。

好的,让我们提出一个问题:如何在不破坏文档的情况下使用完整文档insertOoxml(ooxml, 'replace')

0 个答案:

没有答案