私は平均スタックWebサイトを持っています。最初はviews/index.html
(<ui-view></ui-view>
)がすべてのページのエントリポイントです。それはangular-ui-router
とhtml5mode
を使用します。したがって、ブラウザのhttps://localhost:3000/XXXX
は(#
を追加するのではなく)同じままで、ルータに基づいて対応するコンテンツを表示します。office.jsを追加すると、URLに#が追加されてから削除されます。
次に、サーバーをOfficeアドインとしても使用したいと考えています。 views/addin.html
にはoffice.js
が含まれ、別のルータにはURLのセットとしてhttps://localhost:3000/addin/XXXX
が提供され、html5mode
であるかどうかは関係ありません(URLには#
が含まれています)。だからここ
はroutes/index.js
のcorrepsondingです:
router.get('/addin/*', function (req, res) {
console.log("router.get /addin/*");
res.sendfile('./views/addin.html')
});
router.get('*', function(req, res) {
console.log("router.get *");
res.sendfile('./views/index.html');
});
そして、ここではviews/addin.html
次のとおりです。
<html>
<head>
<title>F-addin</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.2/angular-ui-router.js"></script>
<!--<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>-->
<base href="/" />
</head>
<body ng-app="addinF">
addin content
<ui-view ng-cloak></ui-view>
</body>
<script>
var addinApp = angular.module('addinF', ['ui.router'])
addinApp.config(['$stateProvider', '$locationProvider', function ($stateProvider, $locationProvider) {
$stateProvider
.state('addinNew', {
url: '/addin/new',
template: "new page"
})
.state('addinHome', {
url: '/addin/home',
template: "home page"
})
$locationProvider.html5Mode(true);
}]);
</script>
</html>
office.js
がよく、ブラウザの仕事で、上記のようにコメントしhttps://localhost:3000/addin/new
とhttps://localhost:3000/addin/home
されている場合。ただし、office.js
のコメントが外されていると、奇妙な動作が発生します。ブラウザにhttps://localhost:3000/addin/new
と入力するとhttps://localhost:3000/#/addin/new
に変わり、https://localhost:3000/addin/new
に戻ります。そして、我々はaddin content new page
が一度表示され消えることを見ます。コメントのないoffice.js
で
、我々は<SourceLocation DefaultValue="https://localhost:3000/addin/new"/>
とマニフェストファイルをロードした場合、我々は一度表示され、消えタスクペインaddin content new page
でも参照して、ここでhtml5mode
なしAdd-in Error Something went wrong and we couldn't start this add-in. Please try again later or contact your system administrator.
なり、ブラウザで.../addin/new
または.../addin/home
だけでしょう表示addin content
;アドインは、addin content
でロードすることもできます。
私の目標は、.../addin/new
または.../addin/home
を指し示すアドインを作成することです。 office.js
はどこかにロードする必要があります。私はそれがhtml5mode
(すなわち、URLは#
)であるかどうか気にしませんが、いずれの方法でもその動作は奇妙または不満です。誰かがそれを修正する方法や回避策を知っていますか?あなたは、ウィンドウの歴史replaceStateとpushState機能がnullに設定されていることがわかります
https://appsforoffice.microsoft.com/lib/1/hosted/office.debug.js
:office.jsファイルのデバッグバージョンを見てみると
https:// stackoverflowの重複。com/questions/44604703/adding-office-js-disables-html5mode/44858254#44858254 –