我目前正在開發一個插件,利用文本到語音來說出文檔中的每個句子。我使用跟蹤對象追蹤句子,因爲他們需要一個接一個地說。跟蹤對象在Word Online中投擲錯誤
當嘗試通過加載和訪問'font.color'屬性來嘗試更改句子的字體顏色(突出顯示時正在說出)時,就會出現此問題。這將工作在桌面上,但會引發以下錯誤在線:
調試信息:{「代碼」:「GeneralException」,「消息」:「無法讀取屬性空的‘走出去’」,「errorLocation」 :「Range._onAccess」}
下面是最少的代碼來重現問題:
...
var sentences;
...
Word.run(function (context) {
var selectedSentence = context.document.getSelection().getTextRanges([".", "!", "?"]);
context.load(selectedSentence)
return context.sync().then(function() {
sentences = selectedSentence.items[0].getRange()
.expandTo(context.document.body.paragraphs.getLast().getRange("end"))
.getTextRanges([".", "!", "?"]);
context.load(sentences);
context.trackedObjects.add(sentences);
return context.sync(sentences);
})
}).then(function (sentences) {
sentences.context.load(sentences, 'font');
return sentences.context.sync().then(function() {
sentences.items[0].font.color = "#2E86C1";
})
.then(sentences.context.sync)
}).catch(errorHandler);
如果你只是嘗試直接訪問它的誤差也將產生:
sentences.items[0].font.color = "#2E86C1";
sentences.context.sync();
這是故意這是一個Word.Run之外,作爲在用例中,我希望'Word.Run'的執行在下一句話被使用之前完成(並訪問它的字體屬性),因此爲什麼我使用了跟蹤對象,因此我可以在其外部使用'句子'。上面的代碼只顯示了一個正在使用的單個句子,但我實際上使用了speech.onend和callback來遍歷每個句子。 – Daniel
@Daniel參見我的編輯與微軟工程師的代碼。 –