モーダルウィンドウに Fancybox プラグインを使用しています。どのオプションを使用しても、ユーザーがfancyboxモーダルウィンドウ(灰色の領域)の外側をクリックしたときに、fancyboxモーダルウィンドウが閉じるのを防ぐことはできないようです。
ユーザーにXまたは閉じるイベントをトリガーするボタンをクリックするように強制する方法はありますか?これは単純なはずなので、例を間違って読んでいるだけだといいのですが。
私はもう試した hideOnContentClick: false
しかし、それは私にとってはうまくいかないようです。何か案は?
そのためのオプションはありません。ソースコードを変更する必要があります。
Jquery.fancybox-1.2.1.jsでは、_finishメソッドの341行目をコメントアウト(または削除)する必要があります。
//$("#fancy_overlay, #fancy_close").bind("click", $.fn.fancybox.close);
jQuery(".lightbox").fancybox({
helpers : {
overlay : {
speedIn : 0,
speedOut : 300,
opacity : 0.8,
css : {
cursor : 'default'
},
closeClick: false
}
},
});
<script type="text/javascript">
$(document).ready(function() {
$("#your_link").fancybox({
'hideOnOverlayClick':false,
'hideOnContentClick':false
});
});
</script>
私はfancybox1.3.1を使用しています。ボタンをクリックするだけでユーザーにモーダルボックスを閉じるように強制したい場合は、構成で次のように指定できます。
<script type="text/javascript">
$(document).ready(function() {
$("#your_link").fancybox({
'hideOnOverlayClick':false,
'hideOnContentClick':false
});
});
</script>
この問題については、この方法を試してください
$("YourElement").fancybox({
helpers: {
overlay: { closeClick: false } //Disable click outside event
}
お役に立てれば。
Fancybox 1.2.6を使用している場合(私がプロジェクトに参加しているように)、オプションhideOnOverlayClickを見つけました。 falseに設定できます(例:hideOnOverlayClick:false)。
Scott Dowdingによる提案に基づいてコードを変更することを検討しているときに、このオプションを見つけました。
上記のどれも私にはうまくいかなかったので、私はfancyboxの最新バージョンのために簡単なビットを書いただけです。
function load(parameters) {
$('.fancybox-outer').after('<a href="javascript:;" onclick="javascript:{parent.$.fancybox.close();}" class="fancybox-item fancybox-close" title="Close"></a>');
}
$(document).ready(function () {
$(".various").fancybox({
modal: true,
afterLoad: load
});
});
お役に立てれば :)
私は同じ「問題」に遭遇しました。これは私のために働いた:
$("#fancybox-overlay").unbind();
@Gabrielによってこの質問に対して与えられた$("#fancybox-overlay").unbind()
ソリューションは、コンテンツのロード後にfancyboxにバインドする必要があり、すぐにバインドを解除できなかったことを除いて機能します。この問題に遭遇した人のために、次のコードは私のために問題を解決しました:
$('.fancybox').fancybox({'afterLoad' : function() {
setTimeout(function() { $("#fancybox-overlay").unbind(); }, 400);}
});
400msの遅延でうまくいきました。 300msで動作しましたが、チャンスを逃したくありませんでした。
関数内でcloseClick
パラメーターをfalseに設定します。
$(".video").click(function() {
$.fancybox({
width: 640,
height: 385,
helpers: {
overlay: {
closeClick: false
}
}
});
return false;
});
これらの設定を適用することで、ファンシーボックスが閉じるのを防ぐことができます
'showCloseButton'=>false, // hide close button from fancybox
'hideOnOverlayClick'=>false, // outside of fancybox click disabled
'enableEscapeButton'=>false, // disable close on escape key press
次のリンクからfancyboxの設定を取得します
関数に次の行を追加するだけで、jquery.fancybox-1.2.6.jsの内容を変更する必要はありません。
callbackOnStart : function() {$("#fancy_overlay").bind("click","null");},
上記のすべての回答にエラーが含まれているため、これらすべての回答を組み合わせて使用する必要がありました。確かに、ソースコードの編集は必要ありません。
私の場合、ファンシーボックス内に順番に表示される質問の進行があるため、ボックスを閉じるオーバーレイクリックを無効にしたかったので、ユーザーが誤ってオーバーレイをクリックして進行状況を失うことを望まなかったのですが、その機能をページの他の場所に保持します。
これを使用して無効にします。
$(".fancybox-overlay").unbind();
これを使用して再度有効にします。
$(".fancybox-overlay").bind("click", $.fancybox.close);
次のコードを使用するだけです。
$(document).ready(function() {
$("a#Mypopup").fancybox({
"hideOnOverlayClick" : false, // prevents closing clicking OUTSIE fancybox
"hideOnContentClick" : false, // prevents closing clicking INSIDE fancybox
"enableEscapeButton" : false // prevents closing pressing ESCAPE key
});
$("a#Mypopup").trigger('click');
});
<a id="Mypopup" href="images/popup.png"><img alt="Mypopup" src="images/popup.png" /></a>