displayDialogAsync和html5-history-api的冲突

时间:2017-09-16 00:21:48

标签: html5 ms-office office-js html5-history fragment-identifier

我有一个mean-stack的应用程序,它托管一个网站和一个Excel加载项。 html5已启用,且已

<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
<script src="https://cdn.rawgit.com/devote/HTML5-History-API/master/history.js"></script>

在Excel加载项中,我有一个按钮,可以通过Dialog API打开网站中的页面:

$scope.openDialog = function () {
  Office.context.ui.displayDialogAsync("https://localhost:3000/preview/tmp/6wr-4PqdBrYQwjp3AAAD", {}, function () {})   
}

当我在Chrome中点击Excel Online中的此按钮时,会打开一个包含以下网址的对话框(请注意系统地附加了#和多个%2F),但这并不能阻止很好地显示页面。

https://localhost:3000/preview/tmp/6wr-4PqdBrYQwjp3AAAD?_host_Info=excel|web|16.00|en-us|b6f37f78-e519-7d03-0069-b9c4317a362c|isDialog#%2Fpreview%2Ftmp%2F6wr-4PqdBrYQwjp3AAAD%3F_host_Info=excel%7Cweb%7C16.00%7Cen-us%7Cb6f37f78-e519-7d03-0069-b9c4317a362c%7CisDialog

但是,当我在Firefox中单击Excel Online中的此按钮时,网址会快速更改为以下网址,结果显示该网站的主页:

https://localhost:3000/home#%2Fpreview%2Ftmp%2F6wr-4PqdBrYQwjp3AAAD%3F_host_Info=excel%7Cweb%7C16.00%7Cen-gb%7C919fff78-e51f-dc20-0c3c-871b7d0ec25d%7CisDialog

所以我的问题是:

1)为什么Office.context.ui.displayDialogAsync系统地将#%2F添加到我网站的网址中?是否可以防止这种情况发生?

2)是否可以创建Firefox接受的网址(无论#%2F)?

编辑1:似乎如果我不使用html5-history-api,它就会起作用。所以不知道如何禁用html5-history-api的{​​{1}}? (我必须在displayDialogAsync之后使用html5-history-api的原因是here。)

1 个答案:

答案 0 :(得分:4)

这不是displayDialogAsync。这是Angular路由和Angular位置策略的常见问题。搜索&#34;角度应用正在向我的网址添加哈希&#34;你会发现很多关于它和解决方案的信息。