Avec fancybox (v2), comment puis-je créer une URL unique qui, lors du chargement, affiche la fancybox avec le contenu iframe. Je le fais très bien avec le contenu en ligne (ex. Www.mysite.com/index.html#idgoeshere), mais je ne sais pas ce que l’URL ou le js doivent contenir pour charger le fancybox, et à l’intérieur de celui-ci, un iframe spécifique ou la page ajax.txt.
Ce que j’essaie de réaliser, c’est d’aller sur un lien du type:
www.monsite.fr/index.html#https://stackoverflow.com/questions/15281530/jquery-fancybox-iframe-or-ajax-load-with-url/iframe.html
Chargez la page d’index, avec la fenêtre fancybox ouverte et la page https://stackoverflow.com/questions/15281530/jquery-fancybox-iframe-or-ajax-load-with-url/iframe.html chargée dans la fenêtre fancybox (vous pouvez également utiliser un fichier .txt chargé via ajax également).
HTML
Iframe
Fancybox
$(document).ready(function($) { $.fancybox({ content: $(window.location.hash).html() }); $('.fancybox').fancybox(); });
Merci pour toute aide ou conseils.
Kyle
Mettre à jour
Merci pour tout le monde aide !! Voici ce qui a bien fonctionné pour moi. J’ai sauvegardé notre contenu dans des fichiers HTML séparés, puis je les ai appelés avec fancybox.iframe
JS:
$(document).ready(function () { $('.fancybox').fancybox({ 'scrolling' : 'no' }); if (window.location.hash !== "") { $(window.location.hash).click(); } });
Regardez les exemples sur le site Fancybox L’action Fancybox est entièrement basée sur le href du lien. Donc, si vous chargez la page, puis mettez à jour le href d’un lien sur la page pour qu’il pointe vers iframe.html
avant d’appeler .fancybox
, alors il devrait fonctionner comme prévu. Attention: code non testé à suivre…
$(document).ready(function(){ $('#target').attr('href', window.location.hash.subssortingng(1)).fancybox(); });
L’appel de la sous-chaîne est nécessaire pour supprimer le #
de la chaîne de hachage renvoyée par window.location.hash
J’espère que cela t’aides
L’utilisation du hashtag est une mauvaise idée car des sites tels que Google et Facebook les ignorent souvent.
À la place, utilisez window.history.replacestate dans la fonction afterLoad de fancybox.
Par exemple:
afterLoad:function(){ window.history.replaceState({},"Fancybox","/url-to-set"); }
Ce qui est étrange avec replaceState, c’est que les deux premiers arguments importent peu (pour autant que je sache). La seule chose qui compte est l’argument final “/ url-to-set”. Vous voulez définir ceci comme étant l’URL unique que vous voudriez avoir comme URL.