我正在尝试添加一个词,首先必须在最初加载后重定向到登录页面,并在重定向回登录后再添加 . 添加内容托管在自己的Web服务器上 . 但是,重定向后,我收到“Word未定义”的错误 . 添加进入word内部,我调用了Office.initialize和Word.run . 如果我运行add in以便它指向localhost而不是添加的web服务器,它运行正常,但是当它从Web服务器运行时我得到错误 .
以下是我的代码对于获取错误的页面的样子:
(function () {
"use strict";
Office.initialize = function (reason) {
$(document).ready(function () {
try {
doSomethingInWord();
} catch (e) {
console.log(e);
}
}
}
})();
我的“doSomethingInWord”函数如下所示:
function doSomethingInWord() {
Word.run(function (context) {
var body = context.document.body;
return context.sync()
.then(function () {
body.clear();
return context.sync().then(function () {
console.log('Did Something in word');
})
}).catch(errorHandler);
}
}
1 回答
我认为您遇到的问题是,通过重定向到auth对话框并返回,您不知何故不会重新触发Office.js .
我很惊讶您说它在没有Visual Studio的Word中适用于您 - 我不会在此流程中遇到其他问题,尤其是在Excel Online中,加载项在_1742116中运行(并且OAuth对话框倾向于不允许在
iframes
) .我认为您最好的选择是加载加载项"normally",然后使用
Office.context.ui.displayDialogAsync
API在单独的对话框中显示OAuth登录名 . 在此期间,请将您的加载项显示为"waiting on dialog input for login" . 然后,在OAuth登录完成后,让对话框消息返回父级,传递任何所需信息(令牌或诸如此类) .