DisplayDialogAsync和HTML5历史上的冲突



我有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加载项中,我有一个按钮,该按钮通过对话API在网站中打开页面:

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

当我在Chrome中的Excel Online中单击此按钮时,它将打开一个带有以下URL的对话框(请注意,#和几个%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中单击此按钮时,URL迅速更改为以下URL,事实证明它显示了网站的主页:

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添加到我的网站的URL?是否可以防止这种情况发生?

2)是否有可能将Firefox接受的URL(不论#%2F)?

编辑1:,如果我不使用html5-history-api,它将起作用。因此,不知道该如何禁用该displayDialogAsynchtml5-history-api?(office.js之后我必须使用html5-history-api的原因。)

这不是displayDialogAsync。这是角路由和角度位置策略的常见问题。搜索" Angular App正在将哈希添加到我的URL中",您会发现很多有关它和解决方案的信息。

相关内容

  • 没有找到相关文章

最新更新