jquery.uiのdatepickerをiframeからはみ出させる

jquery.uiのdatepickerをiframeからはみ出させる:


動機

子画面として使用していたiframeが小さかったため、datepickerがテキストボックスを隠したり親画面の裏側に回り込んだりした。

しかしiframeを下に大きくするのはかっこ悪いので、見栄をはりたい。


before.png



完成品

"use strict"; 
 
$(document).ready(function(){ 
    //先に子フレームが閉じた場合の対策 
    document.defaultView.onbeforeunload = function(event){$("#datepicker").datepicker("hide");}; 
 
    //datepicker作成 
    $("#datepicker").datepicker({ 
        beforeShow:function(input,inst){ 
            const calender = inst.dpDiv; 
            //z-indexは親フレーム次第で要調整 
            calender[0].style["z-index"] = "9999"; 
            //親フレームのbodyに移動 
            $('body', parent.document).append(calender); 
            //座標の原点が親フレームになるので、子フレームの座標分を調整 
            setTimeout(function(){ 
                const pos = $(document.defaultView.frameElement).offset(); 
                $(calender).css({ 
                    top:"+=" + pos.top + "px", 
                    left:"+=" + pos.left + "px", 
                }); 
            },1); 
        }, 
    }); 
}); 


after.png



参考にさせていただいた記事

stackoverflow:Moving jquery datePicker outside of ifram
qiita:iframe内のelementから親frameを含むpos座標を取得する方法
stackoverflow:iframe just before unload event

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)