Office-JS忽略Word for Mac中的尾随新行

时间:2018-03-14 13:30:09

标签: javascript ms-word office-js

在我的Office-JS加载项中我插入带有尾随换行符的文本,并将光标设置为此文本的末尾,如下所示:

myText
myText
myText
<-- Cursor is here

在Windows上的Word 2016中,光标正确设置为第二行,但在Word for Mac(版本16.11)中,光标设置为第一行的末尾。

因此,如果我连续3次运行此函数,则会生成以下文本:

在Windows上:

myTextmyTextmyText<-- Cursor is here
// 3 new lines following

在Mac上:

({
  extendsFrom: 'SubpanelListView',
  initialize: function(options){
     this._super('initialize', [options]);
     this.context.on('list:drawereditrow:fire',this.drawerEditClicked, this);
  },
  drawerEditClicked: function(model){
    app.drawer.open({
       layout:'create-actions',
       context:{
         create: true,
         model: model,
         module:'oppp_Opportunity_Products',
       }
    });
  },
   _dispose: function() {
     this._super('_dispose');
   },
});

我错过了什么吗?

3 个答案:

答案 0 :(得分:2)

您可以通过允许Word为您处理此问题来避免处理新行异常。诀窍是使用<br>代替插入HTML insertHtml()标记:

function myInsertTest() {
  Word.run(function(context) {
    let selectedRange = context.document.getSelection();
    selectedRange.insertText("myText", "End");
    selectedRange.insertHtml("<br />&nbsp;", "End");
    selectedRange.select("End");
  });
}

请注意,&nbsp;需要让Word变得有点过于聪明并忽略后面没有任何内容的中断。

答案 1 :(得分:1)

这实际上是一个错误,实际上它现在在Windows的最新版本中失败了。感谢您报告此问题,我们会尽快调查并尽快修复。

答案 2 :(得分:0)

您可以使用JavaScript

String.fromCharCode(13)

插入ANSI 13(Word使用的字符)。所以:

function myInsertTest() {
  Word.run(function(context) {
    var selectedRange = context.document.getSelection();
    selectedRange.insertText("myText", "End");
    selectedRange.insertText(String.fromCharCode(13), "End");
    selectedRange.select("End");
    return context.sync();
  });
}