ページの読み込み時にFancybox(モーダルまたはライトボックスのFancyboxのバージョンなど)を起動したいと思います。これを非表示のアンカータグにバインドし、JavaScriptを介してそのアンカータグのクリックイベントを発生させることができますが、代わりにFancyboxを直接起動して余分なアンカータグを回避します。
ページの読み込み時にFancybox(モーダルまたはライトボックスのFancyboxのバージョンなど)を起動したいと思います。これを非表示のアンカータグにバインドし、JavaScriptを介してそのアンカータグのクリックイベントを発生させることができますが、代わりにFancyboxを直接起動して余分なアンカータグを回避します。
回答:
Fancyboxは現在、自動的に起動する方法を直接サポートしていません。私が機能するようになった回避策は、非表示のアンカータグを作成し、クリックイベントをトリガーすることです。jQueryおよびFancybox JSファイルが含まれた後に、クリックイベントをトリガーする呼び出しが含まれていることを確認してください。私が使用したコードは次のとおりです。
このサンプルスクリプトはHTMLに直接埋め込まれていますが、JSファイルに含めることもできます。
<script type="text/javascript">
$(document).ready(function() {
$("#hidden_link").fancybox().trigger('click');
});
</script>
$(document).ready(LaunchFancyBox());
べきです$(document).ready(LaunchFancyBox);
。(最後に関数呼び出しがないことに注意してください)。
準備ができたドキュメントでこの関数を呼び出すことでこれを機能させました:
$(document).ready(function () {
$.fancybox({
'width': '40%',
'height': '40%',
'autoScale': true,
'transitionIn': 'fade',
'transitionOut': 'fade',
'type': 'iframe',
'href': 'http://www.example.com'
});
});
それは簡単です:
最初に次のように要素を非表示にします。
<div id="hidden" style="display:none;">
Hi this is hidden
</div>
次に、javascriptを呼び出します。
<script type="text/javascript">
$(document).ready(function() {
$.fancybox("#hidden");
});
</script>
以下の画像をご覧ください。
もう一つの例:
<div id="example2" style="display:none;">
<img src="http://theinstitute.ieee.org/img/07tiProductsandServicesiStockphoto-1311258460873.jpg" />
</div>
<script type="text/javascript">
$(document).ready(function() {
$.fancybox("#example2");
});
</script>
(document.ready()とは対照的に)Window.loadは、Fancybox 2.0のJSFiddler onloadデモで使用されているトリックであると思われます。
$(window).load(function()
{
$.fancybox("test");
});
あなたが別の場所でdocument.ready()を使用している可能性があることを念頭に置いてください。これにより、2つのオプションが残ります。すべてをwindow.loadに変更するか、setTimer()を使用します。
なぜこれがまだ答えになっていないのですか?:
$("#manual2").click(function() {
$.fancybox([
'http://farm5.static.flickr.com/4044/4286199901_33844563eb.jpg',
'http://farm3.static.flickr.com/2687/4220681515_cc4f42d6b9.jpg',
{
'href' : 'http://farm5.static.flickr.com/4005/4213562882_851e92f326.jpg',
'title' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit'
}
], {
'padding' : 0,
'transitionIn' : 'none',
'transitionOut' : 'none',
'type' : 'image',
'changeFade' : 0
});
});
今すぐあなたのリンクをトリガーしてください!!
ファンシーボックスのホームページからこれを手に入れました
私が見つけた最良の方法は:
<script type="text/javascript">
$(document).ready(function() {
$.fancybox(
$("#WRAPPER_FOR_hidden_div_with_content_to_show").html(), //fancybox works perfect with hidden divs
{
//fancybox options
}
);
});
</script>
私の場合、以下がうまく機能します。ページが読み込まれると、ライトボックスがすぐにポップアップします。
jQuery:1.4.2
ファンシーボックス:1.3.1
<body onload="$('#aLink').trigger('click');">
<a id="aLink" href="http://www.google.com" >Link</a></body>
<script type="text/javascript">
$(document).ready(function() {
$("#aLink").fancybox({
'width' : '75%',
'height' : '75%',
'autoScale' : false,
'transitionIn' : 'none',
'transitionOut' : 'none',
'type' : 'iframe'
});
});
</script>
アレックスの答えは素晴らしいです。ただし、これはデフォルトのファンシーボックススタイルを呼び出すことに注意してください。独自のカスタムルールがある場合は、その特定のアンカーで.trigger clickを呼び出すだけです。
$(document).ready(function() {
$("#hidden_link").fancybox({
'padding': 0,
'cyclic': true,
'width': 625,
'height': 350,
'padding': 0,
'margin': 0,
'speedIn': 300,
'speedOut': 300,
'transitionIn': 'elastic',
'transitionOut': 'elastic',
'easingIn': 'swing',
'easingOut': 'swing',
'titleShow' : false
});
$("#hidden_link").trigger('click');
});
「ライブ」イベントを使用して、外部JSファイルからのみfancyBoxリンクをトリガーすることができました。
まず、将来の動的アンカーにライブクリックイベントを追加します。
$('a.pub').live('click', function() {
$(this).fancybox(... fancybox parameters ...);
})
次に、アンカーを本文に追加します。
$('body').append('<a class="iframe pub" href="your-url.html"></a>');
次に、アンカーを「クリック」してfancyBoxをトリガーします。
$('a.pub').click();
これで、fancyBoxリンクは「ほぼ」準備できました。なぜ「ほとんど」?2回目のクリックをトリガーする前に遅延を追加する必要があるように見えるため、それ以外の場合はスクリプトの準備ができていません。
これは、アンカーでアニメーションを使用した迅速で汚い遅延ですが、うまく機能します。
$('a.pub').slideDown('fast', function() {
$('a.pub').click();
});
これで、fancyBoxがオンロードで表示されます。
HTH
多分これは役立つでしょう...これはフルサイズのjQueryカレンダークリックイベント(http://arshaw.com/fullcalendar/)で使用されていました...しかし、jQueryによって起動されているfancyboxを処理するためにより一般的に使用できます。
eventClick: function(calEvent, jsEvent, view) {
jQuery("body").after('<a id="link_'+calEvent.url+'" style="display: hidden;" href="http://thisweekinblackness.com/wp-content/uploads/2009/01/steve-urkel.jpg">Steve</a>');
jQuery('#link_'+calEvent.url).fancybox();
jQuery('#link_'+calEvent.url).click();
jQuery('#link_'+calEvent.url).remove();
return false;
}
また、ネイティブJavaScript関数setTimeout()
を使用して、DOMの準備ができた後にボックスの表示を遅らせることもできます。
<a id="reference-first" href="#reference-first-message">Test the Popup</a>
<div style="display: none;">
<div id="reference-first-message" style="width:400px;height:100px;overflow:auto;">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis mi eu elit tempor facilisis id et neque. Nulla sit amet sem sapien. Vestibulum imperdiet porta ante ac ornare. Nulla et lorem eu nibh adipiscing ultricies nec at lacus. Cras laoreet ultricies sem, at blandit mi eleifend aliquam. Nunc enim ipsum, vehicula non pretium varius, cursus ac tortor. Vivamus fringilla congue laoreet. Quisque ultrices sodales orci, quis rhoncus justo auctor in. Phasellus dui eros, bibendum eu feugiat ornare, faucibus eu mi. Nunc aliquet tempus sem, id aliquam diam varius ac. Maecenas nisl nunc, molestie vitae eleifend vel, iaculis sed magna. Aenean tempus lacus vitae orci posuere porttitor eget non felis. Donec lectus elit, aliquam nec eleifend sit amet, vestibulum sed nunc.
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$("#reference-first").fancybox({
'titlePosition' : 'inside',
'transitionIn' : 'fade',
'transitionOut' : 'fade',
'overlayColor' : '#333',
'overlayOpacity' : 0.9
}).trigger("click");
//launch on load after 5 second delay
window.setTimeout('$("#reference-first")', 5000);
});
</script>
このようにリンクを貼ることができます(非表示になります。以前の場合もあります</body>
)
<a id="clickbanner" href="image.jpg" rel="gallery"></a>
そして、このような作業中のrel属性またはクラス
$(document).ready(function() {
$("a[rel=gallery]").fancybox({
openEffect : 'elastic',
closeEffect : 'elastic',
maxWidth : 800,
maxHeight : 600
});
});
jqueryトリガー関数でそれを行うだけです
$( window ).load(function() {
$("#clickbanner").trigger('click');
});
HTML:
<a id="hidden_link" href="LinkToImage"></a>
JS:
<script type="text/javascript">
$(document).ready(function() {
$("#hidden_link").fancybox().trigger('click');
});
</script>
多分あなたはjqmodalを使うことができます、それは軽量で使いやすいです。呼び出すことでモーダルボックスを表示できます
$('.box').jqmShow()