displayDialogAsync 和 html5-history-api 的冲突

2024-01-11

我有一个申请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 https://dev.office.com/docs/add-ins/develop/dialog-api-in-office-add-ins:

$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系统地添加# and %2F到我的网站的网址?有可能阻止这种情况的发生吗?

2)是否可以制作一个url(无论# and %2F) Firefox 接受吗?

Edit 1:看来如果我不使用html5-history-api,它会起作用的。所以不知道如何禁用html5-history-api为了那个原因displayDialogAsync? (我必须使用的原因html5-history-api after office.js is here https://stackoverflow.com/a/42703406/702977.)


它不是displayDialogAsync那就是这样做的。这是 Angular 路由和 Angular 位置策略的常见问题。搜索“Angular 应用程序正在向我的网址添加哈希”,您会找到很多有关它的信息和解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

displayDialogAsync 和 html5-history-api 的冲突 的相关文章