首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加office.js禁用html5mode

添加office.js禁用html5mode
EN

Stack Overflow用户
提问于 2017-06-17 12:33:21
回答 3查看 533关注 0票数 3

我有一个平均堆栈网站,使html5mode通过$locationProvider.html5Mode(true).index.html如下所示:

代码语言:javascript
复制
<html>
<head>
    <base href="/" />
    ...
</head>
<body ng-app="f">
    <ui-view ng-cloak></ui-view>
</body>
</html>

因为有了html5mode,我们可以在浏览器中加载。https://localhost:3000/home将保持不变;如果没有html5mode,该url将成为https://localhost:3000/#/home

现在,我希望服务器服务(除了网站),也是一个Office外接程序。我需要能够在一个外接程序清单文件中执行<SourceLocation DefaultValue="https://localhost:3000/addin" />。为此,我需要在<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>中添加index.html

然而,我意识到,在网站的<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>中添加index.html之后,在浏览器中加载https://localhost:3000/home就变成了https://localhost:3000/#/home,这意味着添加office.js将禁用html5mode

有人知道怎么做吗?有人有办法解决吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-03 05:32:05

将评论作为回答

据我所知,office.js只需要office应用程序,在这种情况下,不要用office-js来负担您的web应用程序。使用ocLazyLoad (或其他类似的库)只在需要时可选地/动态地加载office.js

票数 0
EN

Stack Overflow用户

发布于 2017-07-01 06:59:06

查看office.js文件的调试版本:

https://appsforoffice.microsoft.com/lib/1/hosted/office.debug.js

您将看到窗口的历史记录、replaceState和pushState函数设置为null:

代码语言:javascript
复制
window.history.replaceState = null;
window.history.pushState = null;

它禁用了对浏览器历史进行操作的能力,而且它似乎有角度地认为历史API是不可用的,因此角返回到哈希标签导航。

您可以删除这两行代码来重新启用html5mode,但是考虑到历史API肯定是禁用的原因,很可能会停止使用启用html5mode的

票数 3
EN

Stack Overflow用户

发布于 2017-07-03 01:59:46

修改"office.js“本身是错误的方法。首先,商店目前要求您引用正式的Office.js CDN;因此,这种方法已经有了问题。此外,您也不想继续将相同的修补程序应用于经常更改的一组文件,也不希望因为修改过的旧版本而被困在旧版本上。

一个更好的方法是有一个额外的文件来填补空白,但只是作为一个附加的东西。它的侵入性要小得多,而且不易破碎。

有关特别的历史问题:请参见Office.js取消浏览器历史记录函数破坏历史记录的使用中使用多填充来启用历史记录的方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44604703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档