Fancyboxを使用して、インラインコンテンツ(新しいページにリンクされた画像を持つdiv)を表示しています。 divと画像はモーダルで正常に表示されますが、画像をクリックして新しいページに移動すると、「要求されたコンテンツを読み込めません。後でもう一度試してください」と表示されます。エラー。
FancyBox javascriptは次のとおりです。
<script type="text/javascript">
$(document).ready(function() {
$(".fancybox").fancybox().hover(function() {
$(this).click();
});
$("#fancybox-outer").fancybox().mouseleave( function() {
$("#fancybox-overlay").click();
});
});
</script>
また、次のHTMLクリップに適用されます。
<li class="fancybox-outer">
<a id="inline" href="#hover-image_0" class="fancybox">
<img src="http://website.com/file/id:63" style="margin-top: 32px" />
</a>
<p><a href="http://website.com/template/view/18">1G2A</a></p>
<div style="display: none;"><div id="hover-image_0"><a href="http://website.com/template/view/18"><img src="http://website.com/file/id:64/ext:.png" class="img" /></a></div></div>
</li>
<li class="fancybox-outer">
<a id="inline" href="#hover-image_1" class="fancybox">
<img src="http://website.com/file/id:60" style="margin-top: 32px" />
</a>
<p><a href="http://website.com/template/view/17">17</a></p>
<div style="display: none;"><div id="hover-image_1"><a href="http://website.com/template/view/17"><img src="http://website.com/file/id:61/ext:.png" class="img" /></a></div></div>
</li>
誰が問題の原因であるか、または私が修正する必要があるものを見ていますか?
ありがとう!
Update:1/19/2012-最初の回答と同じテストをサーバーで実行しました( http://estorkdelivery.com /example/example.html )そして、同じ応答が返されることがわかりました。それは私のサーバーに何かがあるようです。
私はまだこの問題について助けが必要です。誰にもアイデアはありますか?
ありがとう!
Update:1/28/2012-私はこの問題の解決策を見つけるために取り組んできましたが、時間を使い果たしてしまいました完全に異なるソリューションを使用します。他の誰かが同じエラーに出くわしたり、最終的に解決策を見つけた場合に備えて、この問題を未解決のままにしています。ありがとう!
あなたのアプローチには多くの問題があります:
Firstは、fancyboxがバインドされたセレクタのhref
属性からコンテンツを取得するため、リンクが
<a class="fancybox" href="{target}" ...
動作するには、次のスクリプトを介してfancyboxにバインドする必要があります
$('.fancybox').fancybox();
かなり明らかですが、あなたのアプローチでは、開かれたファンシーボックス内のリンク(たとえばyahooをターゲットとする)はファンシーボックス自体にバインドされていません。 Fancyboxを再度起動しようとしますが、今回はコンテンツの内容が示されていないため、エラー「要求されたコンテンツをロードできません。後で再試行してください」。言い換えると、リンク(インラインコンテンツ内)<a href="http://yahoo.com" ...
はfancyboxにバインドされていません。
Fancybox内のリンクが(fancyboxにバインドされずに)コンテンツを動的に動作およびロードできる唯一の方法は、現在のコンテンツが外部html
ドキュメントであり、fancybox type
がiframe
に設定されている場合ですあなたの場合ではありません)
Second、画像を開いたので、fancyboxはデフォルトでtype
をimage
に設定しましたが、同じボックスに異なるタイプのコンテンツ(たとえばyahoo)。type
をiframe
に設定し、width
やheight
などの他のオプションを設定する必要があります。
Third、インラインコンテンツを使用しているため、v1.3.xの既存のバグと、それ以上の問題を回避するための回避策に注意してください- ここで詳細を確認できます
最後の、私はここで講義しているだけではなく、あなたの問題で何が起こっているのかの説明に似ています...しかし、良いニュースは必要な方法で機能させるために、さらに数行のコードを追加する必要があります。
1:2度目に(既存のコンテンツに加えて)開くコンテンツの種類ごとにfancyboxスクリプトを作成する必要があるため、この例では、fancybox内の画像をクリックして、yahooを開く必要があります...このスクリプトを作成する
$('.fancyframe').fancybox({
'type':'iframe',
'width': 600, //or whatever you want
'height': 300
});
2:非表示のインラインコンテンツ内で、そのクラスをリンクに設定するため、次のコードは:
<div style="display: none;">
<div id="hover-image_0">
<a href="http://www.yahoo.com"><img src="1_b.jpg" class="img" /></a>
</div>
</div>
今のように見えるはずです
<div style="display: none;">
<div id="hover-image_0">
<a class="fancyframe" href="http://www.yahoo.com"><img src="1_b.jpg" class="img" /></a>
</div>
</div>
非表示のインラインコンテンツごとに同じ操作を行います。 fancyboxで別のタイプのコンテンツを開きたい場合は、それに応じてスクリプトを作成してください。あなたのコードの残りは大丈夫です(ホバーでfancyboxを起動する気になりません)
サイドノート:google、yahoo、jqueryなどのサイトはfancyboxで開きません。また、fancyboxが適切に動作するための適切なDOCTYPE
があることを確認してください(サンプルページには何もありません)。 fancyboxのiframeでGoogleをロードできません を参照してください。
少なくとも私にとっては、この問題の原因を突き止めたと思います。
この問題は、ポップアップクラスと同じ要素の1つにクラスがある場合に発生するようです。
例えば:
_<a class="popup" href="#">Open the popup</a>
_
そして、例えば、同じクラス名でポップアップに何かがあります:
_<div class="popup">some text</div>
_
エラーが表示されます。 divクラスを_popup-window
_のようなものに変更してみてください-エラーを修正するはずです
あなたの例のページでは、クリックしなくても機能します。クリックすると、どのページに移動することになりますか?次の画像に移動するだけですか?
私の個人的な好みでは、ホバーでのアクティベーションは気にしません。特に、ほとんどの人が本能的に画像をクリックする場合、非常に混乱します。しかし、あなたの場合、それはホバーで開き、その後彼らは本能的にクリックし、その後エラーが発生します。
通常適用される機能を使用しているだけで、同じエラーが発生しますか?
必要に応じて、各画像に次のようなギャラリー名のインスタンスを付けてみてください:_rel="gallery"
_と何が起こるかを確認します。次/前の矢印が表示され、期待どおりに動作するはずです。
しかし、正直なところ、ホバー機能を完全に取り除きます。または、少なくともmouseout()を取り除きます。これはおそらく最も面倒な部分です。
これを使用して、fancyboxアクションを呼び出します。
$("a[rel=gallery]").fancybox();
そうすれば、おそらく問題を引き起こしているすべてのクラスを取り除くことができます。
それがお役に立てば幸いです。
私の解決策は:
<script type="text/javascript">
jQuery(document).ready(function() {
$(".fancybox").click(function() {
$.fancybox({
'padding' : 0,
'autoScale' : false,
'transitionIn' : 'none',
'titleShow' : false,
'showCloseButton': true,
'titlePosition' : 'inside',
'transitionOut' : 'none',
'title' : '',
'width' : 640,
'height' : 385,
'href' : this.href,
'type' : 'iframe',
'helpers' : {
'overlay' : {'closeClick': false}
}
});
return false;
});
});
</script>
私もこの問題に出くわしました。
結局のところ、href URLでは大文字と小文字が区別されます。 (可能な場合)
いずれにせよ、href URLをダブル、トリプルでチェックして、正確に大文字と小文字を区別してください。
マークアップが同一であっても、一部の画像が表示され、他の画像が表示されない場合は、これを確認してください。
FancyboxクラスをLI要素に適用しないで、A要素に適用してください。
上記のアドバイスを受けた後、hrefの「.png」を「.PNG」に変更しました。ファイル名は小文字の拡張子ですが、hrefの大文字の拡張子でのみ機能することに注意してください(ファイル名の残りは同じです)
お役に立てれば。
ローカルマシンでテストを再作成しただけで、問題なく機能します(FancyBoxインストールのデモフォルダーから実行しました)。
<html>
<head>
<title>jQuery Fancybox Test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js" type="text/javascript"></script>
<!-- Add fancyBox main JS and CSS files -->
<script type="text/javascript" src="../source/jquery.fancybox.js"></script>
<link rel="stylesheet" type="text/css" href="../source/jquery.fancybox.css" media="screen" />
</head>
<body>
<script type="text/javascript">
$(document).ready(function () {
$(".fancybox").fancybox().hover(function () {
$(this).click();
});
$("#fancybox-outer").fancybox().mouseleave(function () {
$("#fancybox-overlay").click();
});
});
</script>
<li class="fancybox-outer"><a id="inline" href="#hover-image_0" class="fancybox">
<img src="1_s.jpg" style="margin-top: 32px" />
</a>
<p>
<a href="http://www.yahoo.com">Go to Yahoo</a></p>
<div style="display: none;">
<div id="hover-image_0">
<a href="http://www.yahoo.com">
<img src="1_b.jpg" class="img" />
</a>
</div>
</div>
</li>
<li class="fancybox-outer"><a id="inline" href="#hover-image_1" class="fancybox">
<img src="2_s.jpg" style="margin-top: 32px" />
</a>
<p>
<a href="http://www.google.com">Go to Google</a></p>
<div style="display: none;">
<div id="hover-image_1">
<a href="http://www.google.com">
<img src="2_b.jpg" class="img" /></a></div>
</div>
</li>
</body>
</html>
私の問題は画像への不適切なパス、例えば
<a data-fancybox="gallery" href="../dist/imgs/nature/n1.png">
<img src="../dist/imgs/nature/n1.png"></a>
画像はローカルで適切にロードされましたが、オンラインではできませんでした。パスを修正することで問題は解決しました。
<a data-fancybox="gallery" href="imgs/nature/n1.png">
<img src="imgs/nature/n1.png"></a>
私はすべての可能性をチェックしていましたが、@ BrettBumeterが述べたように、EXTRAの大文字と小文字の区別の問題に遭遇しました。実際、これは「大文字と小文字を区別する」ため、画像へのURL(href)パスを* .jpgから* .JPG(またはファイルタイプの拡張子)に変更する必要がありました。これを変更することで問題が解決しました。