【发布时间】:2018-01-12 16:13:49
【问题描述】:
如果我们在 Office 客户端外部加载引用 office.js 的网页,我们将收到警告:Office.js is loaded outside of Office client。
这些信息很有用。
有人知道我的代码中是否有 API 可以检查它吗?
编辑 1:
我稍微解释一下我的情况以及我问这个问题的原因。我正在使用 angularjs 制作一个应用程序,它可以作为网页加载到浏览器中,也可以作为加载项加载到 Office 中。而且我意识到我们不应该同时执行<body ng-app="myApp"> 和angular.bootstrap(document, ['myApp']),否则控制器将执行两次。所以我决定不写<body ng-app="myApp">,而在两种情况下都使用angular.bootstrap(即网页和插件)。
所以对于网页,我可以这样写:
$(document).ready(function () {
angular.bootstrap(document, ['myApp'])
})
app = angular.module('myApp', ['ui.router', 'ui.bootstrap'])
...
所以对于一个网页,我需要在Office.initialize里面写angular.bootstrap,并与插件的情况共享其他代码:
Office.initialize = function (reason) {
$(document).ready(function () {
angular.bootstrap(document, ['myApp'])
});
}
app = angular.module('myApp', ['ui.router', 'ui.bootstrap'])
// share the same code
但是,如果我将这两种情况一起编写如下,它适用于网页,而我将Error: ng:btstrpd App Already Bootstrapped with this Element 用于加载项。
$(document).ready(function () {
angular.bootstrap(document, ['myApp'])
console.log("bootstrapped outside Office.initialize")
})
Office.initialize = function (reason) {
$(document).ready(function () {
angular.bootstrap(document, ['myApp'])
console.log("bootstrapped inside Office.initialize")
})
}
app = angular.module('myApp', ['ui.router', 'ui.bootstrap']).
如果我设置一个标志,控制台将显示bootstrapped outside Office.initialize,后跟isBootstrapped,然后运行代码将显示Office.context 或Office.context.document 未定义:
var isBootstrapped = false;
$(document).ready(function () {
angular.bootstrap(document, ['myApp'])
isBootstrapped = true
console.log("bootstrapped outside Office.initialize")
})
Office.initialize = function (reason) {
$(document).ready(function () {
if (isBootstrapped) console.log("isBootstrapped")
else {
angular.bootstrap(document, ['myApp'])
console.log("bootstrapped inside Office.initialize")
}
})
}
app = angular.module('myApp', ['ui.router', 'ui.bootstrap'])
所以我真的需要一种有效的方法来检查 Office.js 是否在 Office 客户端之外加载(即,它是网页还是加载项),以决定应该执行哪一部分 angular.bootstrap。
【问题讨论】:
-
我只是made an issue,但显然他们无法快速制作 API,因此将不胜感激解决方法...
-
这个功能(在加载项之外使用 Office.js)听起来很有希望,但我无法想象它是如何工作的。它如何连接到 Office 文件?该应用程序如何使用 Office.js?我找不到任何文档。
-
目标不是在外接程序外使用
Office.js。只是因为这个应用程序同时为一个网站和一个 Office 加载项提供服务,所以对于这两种情况都可以轻松加载Office.js。但我们确实需要检查代码是否作为网站或加载项加载。