Javascript 如何在不同的上下文中使用Word.RangeCollection?
假设我搜索一个单词并跟踪返回的单词。RangeCollection,如何在另一个word.run上下文中使用这些范围?我四处搜索,尝试了许多不同的方法来实现这个目标,我得到的最接近的结果是Javascript 如何在不同的上下文中使用Word.RangeCollection?,javascript,promise,ms-word,office365,office-js,Javascript,Promise,Ms Word,Office365,Office Js,假设我搜索一个单词并跟踪返回的单词。RangeCollection,如何在另一个word.run上下文中使用这些范围?我四处搜索,尝试了许多不同的方法来实现这个目标,我得到的最接近的结果是 var searchResults; function search(term){//this works as expected Word.run(function (context) { searchResults = context.document.body.search(t
var searchResults;
function search(term){//this works as expected
Word.run(function (context) {
searchResults = context.document.body.search(term, { ignorePunct: true });
searchResults.track();
context.load(searchResults, ["font"]);
return context.sync()
.then(function () {
for (var i = 0; i < searchResults.items.length; i++) {
searchResults.items[i].font.highlightColor = "#FFFF00";
}
})
.then(context.sync);
}).catch(function (error) {
console.log("Error: " + JSON.stringify(error));
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
});
}
function clearSearch(){
Word.run(searchResults, (context) => {//pass in Word.RangeCollection so its .context can be reused
searchResults.load("font");
return context.sync()
.then(function(){
for (var i = 0; i < searchResults.items.length; i++) {//!!!Cant access items here
searchResults.items[i].font.highlightColor = null;
}
//searchResults.untrack();
})
.then(context.sync);
}).catch(function (error) {
console.log("Error: " + JSON.stringify(error));
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
});
}
var搜索结果;
函数搜索(term){//这工作正常
运行(函数(上下文){
searchResults=context.document.body.search(术语,{ignorePunct:true});
searchResults.track();
加载(搜索结果,[“字体]);
返回context.sync()
.然后(函数(){
对于(var i=0;i{//传入Word.RangeCollection,以便可以重用其.context
searchResults.load(“字体”);
返回context.sync()
.然后(函数(){
对于(var i=0;i
运行search(“anywordinmydoc”)可以正常工作,但在之后运行clearSearch()会告诉我需要加载属性项。据我所知,对RangeCollection调用.load(“font”)应该加载items[]中所有Range对象的font属性,因此searchResults.items应该被加载并可访问
我似乎无法加载searchResults.items,不确定我做错了什么,但我需要能够跟踪并在多个函数中使用Word.RangeCollection。Word.run()
返回Promise,它本身可以从search()
返回。将该承诺解析为searchResults
,从而使这两个函数调用与传递给clearSearch()
的searchResults
可链接(via.then),应该不会太难。