J'utilise Fancybox pour afficher du contenu en ligne (un div avec une image liée à une nouvelle page). La div et l'image s'affichent correctement dans le modal, mais lorsque l'on clique sur l'image pour accéder à la nouvelle page, le message "Le contenu demandé ne peut pas être chargé. Veuillez réessayer ultérieurement." Erreur.
Le javascript de FancyBox est le suivant:
<script type="text/javascript">
$(document).ready(function() {
$(".fancybox").fancybox().hover(function() {
$(this).click();
});
$("#fancybox-outer").fancybox().mouseleave( function() {
$("#fancybox-overlay").click();
});
});
</script>
Et s'applique au clip HTML suivant:
<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>
Est-ce que quelqu'un voit ce qui pourrait causer le problème ou ce que je dois corriger?
Merci!
Mise à jour: 19/01/2012 - J'ai effectué le même test sur mon serveur que la première réponse ( http://estorkdelivery.com/example/example.html ) et j'ai constaté que j'avais le même résultat. réponse en retour. Donc, il semble que ce soit quelque chose avec mon serveur.
J'ai toujours besoin d'aide avec ce problème. Quelqu'un a des idées?
Merci!
Mise à jour: 28/01/2012 - Je cherchais une solution à ce problème, mais le temps me manquait et je suis parti avec une solution complètement différente. Je garde ce problème ouvert au cas où quelqu'un d'autre rencontrerait la même erreur ou finirait par trouver une solution. Merci!
Votre approche a de nombreux problèmes:
First n'oublions pas que fancybox tire son contenu de l'attribut href
de tout sélecteur qui lui est lié, de sorte que le lien
<a class="fancybox" href="{target}" ...
devrait être lié à fancybox via le script suivant afin de fonctionner
$('.fancybox').fancybox();
C'est assez évident, mais dans votre approche, le lien à l'intérieur de la fancybox ouverte (qui cible yahoo par exemple) n'est pas lié à la fancybox elle-même; il tentera à nouveau de déclencher Fancybox avec certitude, mais sans indication de ce que le contenu doit être cette fois, d'où l'erreur "le contenu demandé ne peut pas être chargé. Veuillez réessayer plus tard.". en d'autres termes, le lien (à l'intérieur du contenu en ligne) <a href="http://yahoo.com" ...
n'est pas lié à fancybox.
La seule façon dont les liens dans fancybox peuvent fonctionner et charger le contenu de manière dynamique (sans être lié à fancybox) est lorsque le contenu actuel est un document html
externe et que fancybox type
a été défini sur iframe
(pas votre cas)
Second, vous avez ouvert une image afin que fancybox définisse type
sur image
par défaut, mais vous prétendez alors charger un type de contenu différent sur la même boîte (yahoo par exemple), ce qui nécessiterait de définir type
sur iframe
et d'autres options telles que width
et height
.
Troisième, étant donné que vous utilisez du contenu en ligne, veuillez vous tenir au courant d'un bogue existant dans la v1.3.x et de sa solution de contournement pour éviter d'autres problèmes, vous pouvez en apprendre plus ici
Last, je ne fais pas que donner des conférences ici, cela ressemble plus à une explication de ce qui se passe dans votre problème ... mais la bonne nouvelle est qu'il vous suffit d'ajouter quelques lignes de code supplémentaires pour que cela fonctionne. la façon que tu veux:
1: vous devez créer un script fancybox pour chaque type de contenu que vous souhaitez ouvrir pour la deuxième fois (en plus de votre existant), de sorte que dans votre exemple, vous souhaitez cliquer sur l'image dans fancybox et que cela devrait ouvrir yahoo ... puis créer ce script
$('.fancyframe').fancybox({
'type':'iframe',
'width': 600, //or whatever you want
'height': 300
});
2: dans votre contenu en ligne masqué, définissez cette classe sur le lien, donc ce code:
<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>
maintenant devrait ressembler
<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>
Faites la même chose pour chaque contenu en ligne masqué. Si vous souhaitez ouvrir un autre type de contenu dans Fancybox, créez simplement un script en conséquence. Le reste de votre code est OK (ne me dérange pas de déclencher Fancybox en vol stationnaire)
SIDE NOTES: des sites comme Google, Yahoo, JQuery et d’autres ne s’ouvriront pas dans Fancybox. Assurez-vous également que vous avez la bonne variable DOCTYPE
pour que fancybox fonctionne correctement (votre page d’échantillon n’en contient aucune). Voir Impossible de charger Google dans l'iframe dans fancybox pour des explications.
Je pense avoir compris la cause de ce problème, du moins pour moi.
Le problème semble se produire lorsque vous avez sur l'un de vos éléments une classe identique à celle de la classe contextuelle.
Par exemple:
<a class="popup" href="#">Open the popup</a>
Et vous avez quelque chose dans votre popup avec le même nom de classe, par exemple:
<div class="popup">some text</div>
Vous aurez l'erreur. Essayez de changer la classe div en quelque chose comme popup-window
- cela devrait corriger votre erreur
Dans votre page d'exemple, cela fonctionne pour moi si je ne clique pas. Lorsque vous cliquez, à quelle page êtes-vous censé être dirigé? Voulez-vous qu'il passe simplement à l'image suivante?
Dans mes préférences personnelles, l'activation en vol stationnaire ne m'intéresse pas. Cela devient vraiment déroutant, surtout quand la plupart des gens vont cliquer instinctivement sur une image. Mais dans votre cas, il s'ouvre en vol stationnaire, puis ils cliquent instinctivement, vous obtenez alors l'erreur.
Vous obtenez cette même erreur lorsque vous utilisez simplement la fonctionnalité telle qu’elle s’applique normalement?
Si vous le souhaitez, essayez de donner à chaque image un exemple de nom de galerie tel que: rel="gallery"
et voyez ce qui se passe. Vous devriez faire en sorte que les flèches next/prev apparaissent et fonctionnent comme prévu.
Mais honnêtement, je me débarrasserais complètement de la fonctionnalité de survol. Ou du moins, débarrassez-vous de la souris () C'est probablement la partie la plus gênante.
Utilisez simplement ceci pour appeler les actions de fancybox:
$("a[rel=gallery]").fancybox();
De cette façon, vous pouvez vous débarrasser de toutes les classes qui sont probablement à l'origine des problèmes.
J'espère que ça aide.
ma solution était:
<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>
Je viens de rencontrer ce problème aussi.
Il s'avère que l'URL href est EXTRA sensible à la casse. (si c'est possible)
Quoiqu'il en soit, vérifiez trois fois vos URL href pour vous assurer que le cas est parfaitement correct.
Si certaines images sont visibles et d'autres pas, même si le balisage est identique, vérifiez ceci:
N'appliquez pas la classe fancybox à votre élément LI, faites-le à votre élément A.
Après avoir suivi le conseil ci-dessus, j’ai changé ".png" en ".PNG" dans le href. NOTE que les noms de fichier sont une extension minuscule mais que cela ne fonctionne qu'avec une extension majuscule dans le href (reste du nom du fichier même)
J'espère que cela t'aides.
Je viens de recréer votre test sur mon ordinateur local et cela fonctionne bien pour moi (je l'ai exécuté à partir du dossier de démonstration de l'installation de 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>
Mon problème était de donner un chemin inapproprié à l’image, par exemple;
<a data-fancybox="gallery" href="../dist/imgs/nature/n1.png">
<img src="../dist/imgs/nature/n1.png"></a>
Bien que les images se soient bien chargées localement, cela ne pouvait se faire en ligne . Corriger le chemin a résolu le problème.
<a data-fancybox="gallery" href="imgs/nature/n1.png">
<img src="imgs/nature/n1.png"></a>
J'étais en train de vérifier toutes les possibilités et j'ai rencontré le problème de sensibilité à la casse EXTRA comme l'a mentionné @BrettBumeter . .jpg à * .JPG (ou quelle que soit l’extension de votre type de fichier) . Ce problème a été résolu.