将html标签附加到现有文本的最佳方法是什么?

时间:2018-03-06 16:58:55

标签: javascript office-js

我想使用office文档中当前选定的文本替换为相同的选定文本,但用html包围。有效地为当前选择添加超链接。

我首先阅读了选择的文本属性

var objRange = objContext.document.getSelection();
objRange.load('text');

接着是

return objContext.sync().then(function(){
    var strSelection = objRange.text;
    objRange.insertHtml(
        "<a href='" + decodeURIComponent(strHyperlink) + "'>" + strSelection + "</a>", 
        Word.InsertLocation.replace
    );
    return objContext.sync().then(function(){
        objDialog.close();
    });
});

我需要一个同步来读取文本,然后另一个将更新后的文本写回文档,然后关闭对话框。但这有时会导致html被写入文档两次。有没有更好的方法来做这个而不是双上下文同步?

1 个答案:

答案 0 :(得分:1)

要回答您的问题,如果您需要阅读文本然后写入不同的上下文,那么您需要两个同步。 但是你可以看看Range.hyperlink属性,它是可写的。我不知道它是否会给你一种方法来避免两个同步,但是它是用于你似乎使用insertHtml做的事情。