我有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
,它将起作用。因此,不知道该如何禁用该displayDialogAsync
的html5-history-api
?(office.js
之后我必须使用html5-history-api
的原因。)
这不是displayDialogAsync
。这是角路由和角度位置策略的常见问题。搜索" Angular App正在将哈希添加到我的URL中",您会发现很多有关它和解决方案的信息。