2016-12-01 59 views
0

我正在開發一個office js文字插件。如何從選擇中選擇多個段落

假設我在word文檔中有三個段落。用戶從第一段中間到第二段中間選擇文本。當點擊我的插件中的按鈕時,系統應該自動選擇從第1段開始到第2段結束的文本。用戶應該選擇完整的段落而不是部分段落。如果他們這樣做,系統應該自動選擇整個段落。

我需要知道我們是否有選擇重新定義officejs範圍或其他任何方式來實現我的要求。

在此先感謝。

回答

0

有趣的問題。如果使用範圍的段落集合,則可以使其工作,在此情況下爲當前所選範圍。段落集合(以及Word中的所有集合js API)包含完整段落,而不僅僅是選擇的內容。

請運行這個例子,你會看到完整的段落是如何打印出部分選擇的(如對您的問題描述)

Word.run(function(context) { 
 
     // this will return the full paragraphs within the selection: 
 
     var myParagraphs = context.document.getSelection().paragraphs; 
 
     context.load(myParagraphs); 
 

 
     return context.sync() 
 

 
     .then(function(){ 
 
      for(var i=0; i< myParagraphs.items.length; i++){ 
 
       // here you will get the full paragraphs, not just what the user selected. 
 
       console.log("this is full paragraph:" + (i + 1) + ":" + myParagraphs.items[i].text); 
 

 
      } 
 
     }) 
 
    });

下面是一個例子,你怎麼能選擇2段使用expandTo並選擇...

Word.run(function (context) { 
 
    var pars = context.document.getSelection().paragraphs; 
 
    pars.load(); 
 

 
    return context.sync().then(function() { 
 
    pars.items[0].getRange().expandTo(pars.items[pars.items.length - 1].getRange()).select(); 
 
     
 
     return context.sync() 
 

 
    }).catch(function (error) { 
 
     console.log(error.message); 
 
    }); 
 
})

希望這將你設置在正確的道路上! -Juan,

+0

我需要知道如何在上面發佈的場景中選擇兩個段落。在Interop中,我們可以重新定義範圍並選擇它。我不確定在OfficeJS中是否有辦法實現這一點 **編輯:**我注意到您已經建議在http://stackoverflow.com/questions/39279377中使用expandTo方法。你能告訴我如何在我的場景中擴展範圍(用戶選擇部分段落[從第一段中間開始到第二段中段],並以編程方式選擇整段)? – CSS

+0

你可以使用paragraph.getRange()來獲得每個段落的範圍,然後你可以使用range.expandTo()來擴展它,最後一次你擴大範圍,你可以使用range.Select() –

+0

這就是我也認爲,這裏是我到目前爲止的代碼。 https://jsfiddle.net/bkuzmdsb/#&togetherjs=7uFHoTVdw5 – CSS