在MS Word中使用Office JavaScript API,我知道如何使用document.bindings.addFromSelectionAsync
绑定当前选择,但是,我还没有找到绑定当前选择的子字符串的方法。
例如,如果用户选择了整个段落并且我想仅绑定第一个单词,我将如何才能执行此操作?
addFromSelectionAsync
:我还没有找到更改选择的方法。答案 0 :(得分:3)
在Word中, Binding 在物理上由文档中的内容控件表示,因此通常的方法是在您需要的地方创建内容控件(在这种情况下,选择中的第一个单词) )并为其分配标题,以便最终可以使用bindings.addFromNamedItem方法创建绑定。
总结:
以下是一个示例:
Word.run(function (context) {
//first we get the first word in the selection by using the split method, and using space as delimiter and then we add a content control
var firstWordContentControl = context.document.getSelection().split([" "], true, false, true).getFirst().insertContentControl();
//let's add a title.
firstWordContentControl.title = "BindingID";
return context.sync()
.then(function () {
//we reuse the title to create the binding.
Office.context.document.bindings.addFromNamedItemAsync("BindingID", "text", {}, function (result) {
console.log(result.status);
if (result.status == "succeeded") {
// lets create an event!
result.value.addHandlerAsync(Office.EventType.BindingSelectionChanged, function () {
console.log("event happened");
})
}
});
})
})
.catch(function(exception) {
OfficeHelpers.Utilities.log(exception);
})
希望这会有所帮助。 -Juan
答案 1 :(得分:2)
虽然不完全是您正在寻找的内容,但Word API为您提供了完成此操作所需的大部分内容。
可以使用document.getSelection()获取用户的当前选择。这将返回Range object。在这里,您可以深入了解Paragraphs,child ranges(基于分词规则)等等。
一旦你有一个Range对象反映了你正在寻找的文本,range.Select()将导致在UI中选择该范围。从这里,您可以使用addFromSelectionAsync
来建立绑定。