2017-05-16 13 views
0

リボンからウィンドウを開くときに問題があります。私はonclickがfunction-file.jsで宣言された関数をトリガする私のボタンを宣言しました。すべてうまく動作します。しかし、それはwindow.openをexectuteしません。私はいくつかのCORS問題があるかもしれないことを理解することができます。だから私はいくつかのことをテストしました。最初にウェブサイトのURLをOffice-jsリボン/ FunctionFile.jsから新しいウィンドウを開く

<AppDomains><AppDomain>Website-URL</AppDomain></AppDomains> 

と変更しました。そこで私はlocalyをデバッグしようとしました。そして、私はlocalhost上でアドインを実行し、ウェブサーバ(CORSの問題が発生する可能性があるので、これは問題ではないようです)でホストされているウェブサイトを呼び出すと動作するようです。

var winHandle = window.open("https://website"); 
if (winHandle == null) { 
    console.log('Window was blocked'); 
    Office.context.ui.displayDialogAsync('https://website/openWebsite.html'); 
} 

上記のコードは、それがその後、window.openトリガーするボタンを提供し、サイトを開いたウィンドウを開くことができない場合にはdisplayDialog-APIを使用しています。だから私は次のようでした。新しい場所を設定しただけでは、ポップアップ警告が表示されるためです。そして、VS-Debug機能でこれを試しています。ウィンドウを開いていませんが、ダイアログが開き、最終的にウィンドウをダイアログから開くことができます。ただし、Manifest.xmlがサイドロードされていると動作しません。

window.openを関数ファイルまたは少なくともdisplayDialogから取得するための提案はありますか?


編集:は 二答えが言うように:それは正しいです、最初ページには、実際に同じ起源である必要があります。しかし、私が遭遇したのは、サイドロードされたアドインが実行できなかったサブドメインコールでした。 Visual Studiosのデバッグモードでは、彼は私にCORS警告を与えて、とにかくロードしました。

オリジナル dialog-apiのドキュメントによれば、displayDialogは最初の呼び出しでドメインを離れるべきではないと言います。しかし、私が直接

Office.context.ui.displayDialogAsync('https://someOtherDomain/website'); 

を呼び出すときに問題はないようだ、私はあなただけのAppDomain内のドメインを指定する必要がありますね。

ありがとうございました。

+0

あなたはこれを体験しているプラ​​ットフォームの詳細を追加できますか? (win32、mac、ios、Online?)ありがとう –

答えて

1

機能はUIなしで動作するように意図されています。情報を表示したり、ユーザーと対話する必要がある場合は、ShowTaskpane actionを使用します。このアクションは、アプリ内のどのページにもポイントできます。通常、このシナリオでは、オンロードを実行して結果を表示するページを作成します。

+0

ありがとう、ありがとう。それでdialogApiは今後もFunctionFileから使用できないでしょうか?とにかく、以前のアドインタイプと比べて、リボンの機能性がずっと低下しているのだろうか? – MAOg0espr0

+0

@ MAOg0espr0ちょうど1年前に(私達はリボンフックアップを持っていないのでカップルになるかもしれません)、今はあなたのものを楽しんでください。 –

0

dialog API docsにつきましては、ダイアログ内で開いたの最初のページが同じドメインに存在する必要があります。 docsの同じ節では、関数ファイルからの呼び出しについても明示的に言及しています。

  • URLはHTTPSプロトコルを使用します。これは、ロードされた最初のページだけでなく、ダイアログボックスにロードされたすべてのページで必須です。
  • ドメインはホストページのドメインと同じです。ドメインは、作業ウィンドウ内のページまたはアドインコマンドの機能ファイルになります。これは必須です。ページ、コントローラーメソッド、またはdisplayDialogAsyncメソッドに渡されるその他のリソースは、ホストページと同じドメインに存在する必要があります。

最初のページ(または他のリソース)が読み込まれた後、ユーザーはHTTPSを使用する任意のWebサイト(または他のリソース)に移動できます。最初のページを設計して、すぐに別のサイトにリダイレクトすることもできます。

私はOffice.jsを読み込んでダイアログボックスのページでInitializeを呼び出すまで、ダイアログから関数を読み込もうとしていましたが、これはあなたにメッセージを返すことができます必要に応じて言及されていない)。

関連する問題