小编Cod*_*eve的帖子

在IE和Edge的对话框弹出窗口中获取"警告office.js在办公室客户端外部加载"

我们正在构建一个Outlook插件,我们正在尝试使用以下步骤执行身份验证流程:

  1. 调用Office.context.ui.displayDialogAsync()打开一个带有OAuth登录页面对话框的对话框(此页面的域名也会添加到我们清单的"AppDomains"标签中,此外还添加了我们的插件).
  2. 用户登录并触发身份验证.
  3. 完成后,OAuth流重定向回到插件的同一域下的页面.
  4. 3次调用OAuth重定向页面Office.context.ui.messageParent()并将OAuth令牌发回给插件.以下是重定向页面的HTML内容.
<script type="text/javascript" src="<URL to the server we host Office JS>/office.js"></script>
<script type="text/javascript">
    Office.initialize = function () {
      Office.context.ui.messageParent(window.location.hash);
    };
</script>
Run Code Online (Sandbox Code Playgroud)

这在Outlook 2016和Chrome上运行良好.但是,它有时在IE11/Edge上不起作用,在第4步中断.重定向页面无法执行Office.context.ui.messageParent().我们看到发生这种情况时,在开发人员工具中有一个"警告office.js在办公室客户端外部加载"并且Office.context.ui似乎为空.

我们还发现,关闭IE - > Internet选项 - >安全 - >"启用保护模式"解决了这个问题.对于Edge,根据此页面,无法关闭该模式.(我们确实看到它在某些IE/Edge实例中工作,即使启用此模式).

根据这个文档,看起来问题是"保护模式"不允许office.js加载在办公室客户端之外的重定向页面中.但是,重定向页面与我们的插件属于同一个域.

我们希望对此有所了解以及如何解决此问题.谢谢!

office-js outlook-web-addins

6
推荐指数
0
解决办法
384
查看次数

Dialog API 的 messageParent 不使用 OWA

我正在将 Office Javascript API 用于我的 Outlook 加载项。我正在运行 Outlook-web-16.01 ( https://outlook.live.com/owa/)。

我可以通过调用UI.displayDialogAsync. 但是调用UI.messageParent不会导致在DialogMessageReceived父页面上被触发。我在同一个域上同时运行父级和对话框。

然而,手动关闭对话框会DialogEventReceived在父级上触发并带有12006.

我还注意到对话框在加载后立即在 JS 控制台上出现此错误,但不确定它是否相关:

无法执行'postMessage''DOMWindow':提供的目标来源('https://outlook.live.com')不匹配收件人窗口的原点('MyOrigin')。

我正在使用GitHub 中OfficeDev 示例

我在从这里复制的父页面上启动对话框的代码,

function dialogCallback(asyncResult) {
  if (asyncResult.status == "failed") {

      // In addition to general system errors, there are 3 specific errors for 
      // displayDialogAsync that you can handle individually.
      switch (asyncResult.error.code) {
          case 12004:
              console.log("Domain …
Run Code Online (Sandbox Code Playgroud)

office-js outlook-web-addins

5
推荐指数
1
解决办法
964
查看次数

什么是定位祖先?

我正在阅读本文在MDN上的“定位技术” 。它谈到“可以将绝对定位元素固定到相对于其最近定位的祖先元素的位置”。

我对“已定位祖先”的理解是具有除静态以外的任何位置属性的祖先。但是我需要专家的意见来验证我的想法。

css css-position

4
推荐指数
1
解决办法
2529
查看次数

如何在 Ubuntu 中使用 arm-linux-gnueabihf-g++ 在 amd64 系统上交叉编译 32 位 arm 架构的应用程序

我是 arm-linuxgnueabihf-g++ 的新手。我正在使用 Ubuntu 14.04 并安装了 arm-linuxgnueabihf-g++-4.7 的 amd64 机器上工作。我想针对 32 位 arm 架构交叉编译我的应用程序。

我运行命令:

arm-linux-gnueabihf-g++ -m32 hello.cpp -o hello.
Run Code Online (Sandbox Code Playgroud)

但它给了我错误:arm-linux-gnueabihf-g++:错误:

unrecognized command line option ‘-m32’.
Run Code Online (Sandbox Code Playgroud)

互联网上似乎很少有关于 arm-linux-gnueabihf-g++ 的文档。

任何人都可以给我一些帮助吗?

c++ linux arm cross-platform cross-compiling

3
推荐指数
1
解决办法
7845
查看次数

LinkedList 的“类型不兼容:无法推断类型变量”

incompatible type: cannot infer type-variable(s) E (actual and formal argument lists differ in length)从以下代码的第二个语句中得到错误,

Deque<TreeNode>[] stacks = new Deque[2];
Arrays.set(stacks, LinkedList::new);
Run Code Online (Sandbox Code Playgroud)

但是,用 ArrayDeque 替换 LinkedList 修复了错误,

Arrays.set(stacks, ArrayDeque::new);
Run Code Online (Sandbox Code Playgroud)

无论LinkedListArrayDeque实现Deque接口。我很困惑为什么它适用于ArrayDeque但不适用于LinkedList

java deque

2
推荐指数
1
解决办法
636
查看次数

C++ 11:为什么rvalue引用参数隐式转换为lvalue

以下是我的问题的简单代码,

void overloaded (int&& x) {
  cout << "[rvalue]";
}

template <class T>
void fn (T&& x) {
  overloaded(x);
}

int main() {
    fn(0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我遇到了编译错误

无法将' int'左值' 绑定到' int&&'

  overloaded(x);
Run Code Online (Sandbox Code Playgroud)

我在这里很困惑,x作为右值引用传入fn().但为什么抱怨的overload()电话是一个左值?fn()x

c++ rvalue-reference c++11

1
推荐指数
1
解决办法
1180
查看次数