ファンシーボックスのポップアップフレームを閉じると、親ページが更新されます。ポップアップ内にログインページがあるので、ファンシーボックスが閉じたときに親ページを更新して新しいログイン状態を表示する必要があります。
私はそれをiFrameコードなしで動作させることができます:
<script type="text/javascript">
$(document).ready(function() {
$("a.iframeFancybox1").fancybox({
'width': 800,
'height': 450,
'onClosed': function() {
parent.location.reload(true);
;}
});
});
</script>
しかし、iFrameコードで動作させることはできません。
<script type="text/javascript">
$(document).ready(function() {
$('a.iframeFancybox1').fancybox({
'width': 800,
'height': 450,
'type' : 'iframe'
'onClosed': function() {
parent.location.reload(true);
;}
});
});
</script>
問題は次の行で行うことです:
'type' : 'iframe'
その行を追加するとすぐに、ポップアップが機能しなくなります。
ファンシーボックスでiframe
をポップアップ表示し、ボックスが閉じたときに親ページを更新する方法については、誰でも解決策を提案できますか?ありがとう!
_$(".fancybox").fancybox({
type: 'iframe',
afterClose: function () { // USE THIS IT IS YOUR ANSWER THE KEY Word IS "afterClose"
parent.location.reload(true);
}
});
_
または:
jquery.fancybox.jsファイルに移動し、行138に移動します。これは次のようになり、parent.location.reload(true);
を追加します
_afterClose: function (opts) {
if (this.overlay) {
this.overlay.fadeOut(opts.speedOut || 0, function () {
$(this).remove();
parent.location.reload(true);
});
}
this.overlay = null;
}
_
$(".fancybox").fancybox({
'width' : '75%',
'height' : '65%',
'autoScale' : false,
'transitionIn' : 'none',
'transitionOut' : 'none',
'type' : 'iframe',
'hideOnOverlayClick': false,
'onClosed' : function() {
parent.location.reload(true);
}
});
IMOを修正したと言う明らかな欠落のほかに、これはfancyboxの問題ではなく、親の更新の問題です。
「理論的に」これを実現する方法は複数ありますが、「ほとんど」は実際には機能せず、さらに悪いことに実際には何も表示されないため、フレームの親をリロードするのは難しいことがわかりました。テストに使用したWebブラウザーによって発生したエラー。
Chrome、FF、IEでうまく機能するコードを次に示します。
afterClose: function(){
parent.location.href = parent.location.href;
},
これは基本的に、親hrefを現在の任意のものに設定することを意味します。これにより、実際にはページが更新されます。試してみてください。問題なく動作するはずです。
実際には次の行:
parent.location.href = parent.location.href;
フレームを使用して(もちろん親から)、またはフレームを使用せずにWebページを更新することができます。 HTH。
私にとって次のコードは問題なく動作します:
$("a.ic-edit").fancybox({
'width' : '65%',
'height' : '85%',
'autoScale' : false,
'titleShow' : false,
'transitionIn' : 'no',
'transitionOut' : 'no',
'scrolling' : 'no',
'type' : 'iframe',
onCleanup : function() {
return window.location.reload();
}
});
正確には言えませんが、おそらく「onCleanup」を使用する理由です(実際にはonClosedを使用しようとしませんでした)。
'onClosed': function() {
parent.location.reload(true);
;} // <----is it ok if you have an extra ';' here?
Fancyboxを閉じるために2行を書き込む必要があります。閉じた後、fancyboxを開いた親ページをリロードします。
注意すべきことの1つは、window.openerで試してみると、fancyboxがwindow.openerに関して親の子ウィンドウとして扱われないため、機能しません。
IEはすでに愚かであるため、windows.openerはWindows PhoneでもIEでも機能しません。
<script type="text/javascript">
parent.$.fancybox.close();
parent.location.reload(true);
</script>
リンクの更新:
jQuery(function($){
$('#refresh').click(function ()
{
parent.location.reload();
});
});
<a href="#" id="refresh">refresh</a>
あなたは与えることができます:
setTimeout(function () {
parent.location.reload();
}, 1000);
または条件、例えば、
<script>
if(formSend == true){
setTimeout(function () {
parent.location.reload();
}, 1000);
}
</script>
IFrameを閉じるときにPOSTDATA警告が表示されないようにするための回避策
1)フォームを作成してください:
<form name="RefreshForm" method="post" action="" >
<input name="Name1" value="Value1" type="hidden" />
<input name="DatafromPost1" value="ValuefromPOST1" type="hidden" />
<input name="DatafromPost2" value="ValuefromPOST2" type="hidden" />
</form>
2)ファンシーボックスの最後に次の行を追加します。
ファンシーver 2.x.x
afterClose : function() {
setTimeout('document.RefreshForm.submit()',1000); }
ファンシーバージョン1.3.x
onClosed : function() {
setTimeout('document.RefreshForm.submit()',1000); }
1000 = 1秒。
「location.reload」で例を使用すると、ページをリロードする必要があることを通知するブラウザポップが表示されます。ボタンをクリックしてページを更新し、警告ポップアップを表示しませんでした。
$(".addDoc").colorbox({
iframe: true,
width: "550px",
height: "230px",
'onClosed': function() {
$("#btnContSave").click();
}
});
Shopifyでfancyboxを使用してフォームを閉じるときに更新または再読み込み
私はこれをShopifyで使用していましたが、これは他にも機能します
jQuery(".add-device").fancybox({
maxWidth : 970,
maxHeight : 700,
fitToView : false,
width : '90%',
height : '90%',
autoSize : false,
closeClick : false,
openEffect : 'none',
closeEffect : 'none',
beforeClose: function() {
device_has_subs = false;
$("#mac_address").prop("readonly", false);
},
afterClose : function() {
window.location.reload(true);
}
});
ここで、AfterCloseがタスクを再生しているときのみ、ウィンドウの代わりに親を書き込むこともできます
afterClose : function() {
parent.location.reload(true);
}
shopifyでフォームをリセットするだけの場合、shopifyで$( "form")[0] .reset()が機能しないため、反復を使用してフォームの値を空にできます
jQuery(".add-device").fancybox({
maxWidth : 970,
maxHeight : 700,
fitToView : false,
width : '90%',
height : '90%',
autoSize : false,
closeClick : false,
openEffect : 'none',
closeEffect : 'none',
beforeClose: function() {
device_has_subs = false;
$("#mac_address").prop("readonly", false);
var array_element = document.getElementById("form_id");
if (array_element){
for (i=0; i < array_element.length; i++){
element = array_element[i].type.toLowerCase();
switch(element){
case "text":
array_element[i].value = "";
break;
case "hidden":
array_element[i].value = "";
break;
case "email":
array_element[i].value = "";
break;
case "checkbox":
if(array_element[i].checked){
array_element[i].checked = false;
}
break;
case "select-one":
array_element[i].selectedIndex = -1;
break;
case "select-multi":
array_element[i].selectedIndex = -1;
break;
default:
break;
}
}
}
},
});
form_idはフォームIDです