トップ回答者
SharePointアプリパーツ(アドインパーツ)で、埋め込まれたページの情報を取得したい

質問
-
お世話になります。
現在、VisualStudio2013で、SharePointOnline2013向けのSharePointホスト型アドインを開発しております。
今まで、リストの表示フォーム、編集フォームにスクリプトエディタ、(またはJSリンク)を直接埋め込んで、処理を行っていたのですが、
SharePointアドイン上でアプリパーツを作成し、そこで処理を行うようにしようとしています。
イメージとしては、今まで直接埋め込んでいた処理を、アプリパーツで表示するiframeページ領域で処理するようにし、
その処理結果を親画面に、無理なら最悪iframeページ内に出すようなイメージだったのですが、その行いたい処理でリストのGUIDや、アイテムのID等を取得して処理をしており、
アプリパーツ内に処理を記述しても、アプリパーツで表示しているページ情報しか拾えず、困っています。
私自身ifreamに関する知識が乏しく、調べながら親ページの情報を取得しようと試みたのですが、上手く取得できていない状態です。
アプリパーツのelement.xmlに使用できるトークンの値を下記のページで調べて確認したのですが、求める情報は取得できませんでした。
参考:SharePoint アドインの URL 文字列とトークン
そこで、SharePointアドインで作成されたアプリパーツから、アプリパーツを埋め込んであるリストページの情報を取得する方法をご教授頂けないでしょうか。下記の情報を取得したいと考えております。
・リストのGUID、またはリスト名
・リストアイテムのID
・ページのURL
以上となります。何卒よろしくお願い致します。
- 編集済み sttks 2016年6月16日 10:33 誤字の訂正
回答
-
答えではないのですが、アドイン側のrefererに親ページのURLが入っていたりしないでしょうか?
表示フォーム等であれば、URLにリストのURLやアイテムIDが入っているので、このURLがアドイン側のrefererに入っていれば、そのURLからほしい情報が取れるのではないかと。
基本的にiframeの内側のページから親ページの情報を取得するのは、セキュリティ上問題があるのでブラウザがそれを許してくれません。
なので、がんばって自分自身が持っている情報の中で対応していくしかないです。
そうなると、親とのつながりは自分自身のURLにわたってくるクエリ文字列か、Refererくらいしかないと思います。
refererにもなかったら・・・厳しいかもしれないですね。SharePoint Developer http://sharepoint.orivers.jp
- 回答としてマーク 星 睦美 2016年12月1日 1:29
すべての返信
-
答えではないのですが、アドイン側のrefererに親ページのURLが入っていたりしないでしょうか?
表示フォーム等であれば、URLにリストのURLやアイテムIDが入っているので、このURLがアドイン側のrefererに入っていれば、そのURLからほしい情報が取れるのではないかと。
基本的にiframeの内側のページから親ページの情報を取得するのは、セキュリティ上問題があるのでブラウザがそれを許してくれません。
なので、がんばって自分自身が持っている情報の中で対応していくしかないです。
そうなると、親とのつながりは自分自身のURLにわたってくるクエリ文字列か、Refererくらいしかないと思います。
refererにもなかったら・・・厳しいかもしれないですね。SharePoint Developer http://sharepoint.orivers.jp
- 回答としてマーク 星 睦美 2016年12月1日 1:29
-
全く試しておらず恐縮ですが、以下のようなクロスドメイン通信用のPostMessageを利用して実現できないでしょうか。
・マスターページ側のJavascript
$(document).ready(function() {
var ifrm = document.getElementById('ifrm').contentWindow;
ifrm.postMessage('[リストIDなどの文字列やURL等]', 'http://ホスト名');
});
・アドイン側のJavascript
window.addEventListener('message', function(event) {
// メッセージを受け取る
var txt = event.data;
}, false);
- 回答の候補に設定 星 睦美 2016年12月1日 1:29