【Salesforce】カスタムボタンからopenした子ウィンドウのcloseを監視する

【Salesforce】カスタムボタンからopenした子ウィンドウのcloseを監視する

詳細画面のカスタムボタンからJavaScriptでopenした子ウィンドウでレコードを更新し、更新の後に子ウィンドウを閉じて呼び出し元の親ウィンドウを更新する動きがありました。

今までは子ウィンドウでレコードを更新した後に呼び出し元と同じドメインの静的リソースを読み込んで呼び出し元をreloadしていたのですが、SalesForceの更新に伴い静的リソースのドメインは全てVisualForceドメインになってしまいました。

そのため、クロスドメインの関係で更新処理が動かなくなってしまいました。

そんな経緯があり、子ウィンドウを閉じた際に親ウィンドウを更新するように修正しました。

// 子ウィンドウを開く
var childUrl = "/apex/ChildWindow";
var Win = window.open(childUrl,"",'width=1000,height=500,toolbar=no,lacation=no,directories=no,status=no,menubar=no,resizable=no,scrollbars=no,dependent=yes','');

// 1秒ごとに子ウィンドウを監視する 
var interval = setInterval(function(){ 

    // 子ウィンドウが閉じられた際にウィンドウを更新する
    if(Win.closed){

        location.reload();
    } 
},1000);

実際にはif文の中で対象のレコードが更新されたかを確認しています。

この動きだとほんの少しタイムラグがありますが、許容範囲内でしょうか。

実際には2回押された際の動作も記述した方が良いのだと思いますが、とりあえずの応急処置ではこのくらいでしょうか。

もっと良い方法もある気がしますが。。。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です