可能であれば、iframeを使用して親の子としてfancyboxを開きたいです。
( fancybox で構築された) iframe を開いて、window.open を使用して iframe を開いたとブラウザに信じさせることは可能ですwindow.close()
かwindow.opener.location.reload()
?
ファンシーボックスのコードはシンプルです:
$("#custom_alert").fancybox({
'width' : w,
'height' : h,
'autoScale' : false,
'transitionIn' : 'none',
'transitionOut' : 'none',
'type' : 'iframe',
//'scrolling' : 'no'
}).trigger('click');
編集:次のような機能は使用できません:
function closePopup(){
window.close();
if(parent.jQuery().fancybox) {
parent.jQuery.fancybox.close();
}
}
window.close() 関数を使用する必要があります。
私の問題の修正は、アラートや確認で行ったように閉じる機能を書き直すことができない理由を教えてくれることもあります。
EDIT 2: Raohmaru と JFK に感謝します。フィドルが機能するのを確認した後、必要な関数を作成しましたが、(私にとって) 奇妙なことが起こっています:
他の誰かがそれを必要とする場合の作業コードは次のとおりです。
(function() {
var proxied = window.close;
window.close = function() {
if(parent.jQuery().fancybox) {
parent.jQuery.fancybox.close();
}
else
return proxied.apply(this, arguments);
};
})();
これは、fancybox と window.open の両方のケースで機能します。
私の問題はこれでした:インデックスにいくつかの.jsファイルを含めます:
overwrites
fancybox pack
general scripts
その関数を一般的なスクリプトに入れると完全に機能しますが、上書き js (あるべき場所) に入れると機能しません (コンソールエラーはなく、何も起こりません)。インクルードの位置を交換しようとしましたが、うまくいきません。
これが、上書き.jsに常に含まれていたため、最初から機能させることができなかった理由です。