2011-12-04 4 views
2

Ok, j'ai installé FB 2.0.x et c'est vraiment sympa. Mais, j'ai une page avec 4 vidéos en utilisant le JW Player. Actuellement, lorsque vous cliquez sur un lien, il exécute une fonction pour ouvrir une instance de fancybox. La fancybox est un ensemble de code HTML. A l'intérieur du code html est un div avec un ID (unique pour chaque div/vidéo). Ensuite, il ajoute les flashvars, params et attributs. La fonction est ci-dessous:Fancybox swfobject "Le contenu demandé ne peut pas être chargé. Veuillez réessayer plus tard."

function show_modelpopup(id,title,filepath,base_url) { 
    var flashvars = { file: base_url+"uploads/videos/original/"+filepath, autostart:'true', skin: base_url+'js/skin.zip'}; 
var params = { allowfullscreen:'true', allowscriptaccess:'always', wmode: 'transparent' }; 
var attributes = { id: id+'player', name: id+'player' };        
swfobject.embedSWF(base_url+'mediaplayer/player.swf','container'+id, 480, 385, '9.0.115', 'false', flashvars, params, attributes, flashloaded); 
} 

Et quand les flashvars, params et attributs sont fait Theatrical, il fonctionne swfobject.embedSWF et la dernière option est la fonction d'exécuter quand il est fait le chargement de la vidéo:

function flashloaded() { 
    jQuery('#shadowbox_archives').fancybox({ 
     padding: 10, 
     type: 'html', 
     height: 520, 
     width: 600 
    }); 
    jQuery.fancybox.open(jQuery('#shadowbox_archives')); 
} 

Et tout cela fonctionne très bien. Il charge la fenêtre et vous voyez le lecteur flash. Mais quand vous cliquez sur le bouton de lecture, il donne "Le contenu demandé ne peut pas être chargé. Veuillez réessayer plus tard". J'utilise firebug sur Firefox pour consoler les choses du journal et j'ai vérifié le chemin du fichier flv EST correct. En fait, j'ai la page d'accueil définie pour afficher la même vidéo mais pas à l'intérieur de la fancybox. La sortie des js swfobject sont ci-dessous:

Fancybox Popup:

<object id="45player" width="480" height="385" type="application/x-shockwave-flash" name="45player" data="http://www.green-scene.com/mediaplayer/player.swf"> 
    <param name="allowfullscreen" value="true"> 
    <param name="allowscriptaccess" value="always"> 
    <param name="wmode" value="transparent"> 
    <param name="flashvars" value="file=http://www.green-scene.com/uploads/videos/original/video_45_1318559535.flv&autostart=true&skin=http://www.green-scene.com/js/skin.zip"> 
    </object> 

Page d'accueil (non de fancybox):

<object id="45player" width="480" height="385" type="application/x-shockwave-flash" name="45player" data="http://www.green-scene.com/mediaplayer/player.swf"> 
    <param name="allowfullscreen" value="true"> 
    <param name="allowscriptaccess" value="always"> 
    <param name="wmode" value="transparent"> 
    <param name="flashvars" value="file=http://www.green-scene.com/uploads/videos/original/video_45_1318559535.flv&autostart=true&skin=http://www.green-scene.com/js/skin.zip"> 
    </object> 

La page d'accueil n'a pas de problème. Mais le fancybox fait. Alors qu'est-ce qui me manque?

J'apprécie toute votre aide!

MISE À JOUR Une découverte intéressante vient d'être faite. Si je clique sur le bouton dans la barre de contrôle du lecteur pour passer en plein écran, il passera en plein écran et je peux cliquer sur jouer pour réellement le jouer. Si je clique sur le bouton pour revenir à la taille normale (ou appuyez sur esc), il continue à jouer dans la fancybox. Mais si j'essaie de cliquer sur pause, il disparaît et me donne le même message d'erreur.

MISE À JOUR # 2 Il s'avère qu'Internet Explorer apprécie ce qui précède et cela fonctionne très bien. Mais Firefox et Safari me donnent la même erreur ci-dessus. C'est ahurissant. J'ai été capable d'obtenir la lecture automatique de la vidéo lorsque la shadowbox s'ouvre, mais maintenant vous ne pouvez pas mettre en pause ou aller en plein écran dans Firefox ou Safari sur Mac. Mais IE 8/9 fonctionne encore très bien.

+0

Il serait intéressant de voir un lien avec le problème, sinon nous allons deviner – JFK

+0

Bien sûr. Allez d'abord ici: http://www.green-scene.com/index_demo.php et cliquez sur Connexion en haut. Utilisez les informations de connexion suivantes: helpme/stackoverflow. Alors allez ici: http://www.green-scene.com/index_demo.php/myscene/archives. Vous verrez 4 pouces vidéo. –

Répondre

1

OK, j'ai eu un coup d'œil à votre page et j'ai vu que chaque pouce déclenche une fonction onclick:

onclick="return show_modelpoup('//parameters')" 

la fonction show_modelpoup(), qui est situé à l'intérieur du fichier archives.js construit le contenu d'un DIV avec id="shadowbox_archives" via jQuery html()

jQuery('#shadowbox_archives').html(); 

mais se lie également à la même Fancybox sélecteur

jQuery('#shadowbox_archives').fancybox(); 

... plus tard, la même fonction déclenche Fancybox (pas de shadowbox) avec la méthode API $.fancybox.open() ... jusqu'ici tout va bien!?!?Qu'est-ce qui se passe ici, c'est que le contenu réel de Fancybox est un DIV avec id="shadowbox_archives" (également lié à Fancybox), donc chaque fois que vous cliquez sur une partie à l'intérieur de DIV, soit vos contrôles swf ou ailleurs (même sur un espace vide), il essaye de tirer Fancybox à nouveau (sans indication de ce que le contenu doit être cette fois-ci), d'où l'erreur « le contenu demandé ne peut pas être chargé. S'il vous plaît réessayer plus tard. »

Reliure Fancybox à la le même contenu (sélecteur) qui sera ouvert dans Fancybox crée un effet de boucle, donc vous devrez reformuler votre fonction show_modelpoup() pour changer cela,

... ou peut-être vous avez juste besoin de modifier la fonction flashloaded() (à l'intérieur show_modelpoup()) d'une manière qu'il ne se déclenche directement Fancybox après le contenu flash a été chargé, comme:

function flashloaded() { 
    jQuery.fancybox({ 
     href: '#shadowbox_archives', 
     padding: 10, 
     type: 'html', 
     height: 520, 
     width: 600 
    }); 
    // jQuery.fancybox.open(jQuery('#shadowbox_archives')); 
} 

Notez que j'ai commenté la méthode API $.fancybox.open()

MISE à JOUR:

Depuis que vous utilisez le contenu en ligne, votre fonction flashloaded() devrait ressembler à:

function flashloaded() { 
    jQuery.fancybox({ 
     href: '#shadowbox_archives', 
     autoSize: false, 
     padding: 10, 
     type: 'inline', // no html 
     height: 520, 
     width: 600 
    }); 
    // jQuery.fancybox.open(jQuery('#shadowbox_archives')); 
} 
+0

Ok. Je pense que je comprends ce que vous voulez dire. Cependant, j'avais du mal à ouvrir la fancybox sans ajouter la méthode api open. Donc je l'ai modifié comme vous l'avez suggéré et maintenant quand je clique sur une vignette, j'ai cette erreur. Une chose que j'ai réalisé juste avant que je reçois votre message est que si je clique n'importe où dans le shadowbox à l'exception du bord rembourré, cela ferait la même chose que de cliquer sur la vidéo. C'était comme s'il y avait une couche sur le dessus. Mais cela a du sens ce que vous avez dit car IE n'aime pas les événements div "click", mais FF et Safari le font. J'apprécie que vous jetiez un coup d'oeil. –

+0

OK, je viens de remarquer que j'ai oublié quelque chose .... remplacer: type: 'html' par type: 'inline' ... et ajouter autoSize: false à vos options API, je pense que type: html crée le problème – JFK

+0

You devrait mettre type: 'html' avec l'option API "contenu" seulement comme: contenu: ' contenu codé en dur' – JFK

Questions connexes