2009-07-04 3 views
4
<object width="438" height="280" id="pano" > 
    <param value="url_flash" name="movie" /> 
    <param value="false" name="menu"/> 
    <param value="high" name="quality"/> 
    <param value="#FFFFFF" name="bgcolor"/> 
    <embed width="438" height="280" pluginpage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="pano" bgcolor="#FFFFFF" quality="high" menu="false" src="url_flash"/> 
</object> 

J'ai ce code flash, ce que je veux est que lorsque je clique sur certains boutons pour changer avec jquery <embed src=''> (pour Firefox) et le premier <param> (pour IE), param, jquery

Comment puis-je peut faire ça?

Cela fonctionne pour intégrer mais comment je peux faire pour param dans IE?

$('.link a').click(function() { 

    var urlconst = 'changed_url'; 

    $(".flash_photo embed").attr({ 
     src: changed_url   
    }); 

J'ai essayé

$('#pano param:first').val(changed_url) 

Mais cela ne fonctionne pas.

Répondre

7

Avez-vous envisagé d'utiliser le plugin jQuery SWFObject?

http://jquery.thewikies.com/swfobject/

+0

je flash, un besoin que de changer paramètres dans celui-ci Whan je clique sur un lien je peux changer pour Embed mais pour 'param' I J'ai un problème – AlexC

+0

merci, j'utilise ce plugin – AlexC

0

Vous devez utiliser le nom de la variable où vous avez mis l'url:

$('#pano param:first').val(urlconst) 
4

EDIT

Le comportement que je décrit ci-dessous ne se déroule dans IE dans des situations particulières. Lorsque l'élément objet était présent dans le DOM chargé, je pouvais mettre à jour la valeur de l'élément param nommé movie, mais l'état de l'objet ne changeait pas. Et l'objet ne peut pas être facilement rafraîchi autant que je sache. Il semble que le meilleur moyen est d'enlever l'élément de l'objet et d'en ajouter un nouveau. Pour cela, il semble que le plugin jQuery de SWFObject suggéré par SolutionYogi, ou quelque chose de similaire, pourrait bien être la meilleure solution.

ORIGINAL

D'après ce que je vois quand j'essayer cela dans IE8, IE ne retient que les éléments embed que la page est chargée, non pas les éléments d'objet et param. Vous ne pouvez donc pas modifier cette valeur du paramètre car il n'existe plus.

Donc, si cela devient servi:

<object width="425" height="344"> 
    <param name="movie" 
     value="http://www.youtube.com/v/ePXlkqkFH6s&hl=en&fs=1&"></param> 
    <param name="allowFullScreen" value="true"></param> 
    <param name="allowscriptaccess" value="always"></param> 
    <embed src="http://www.youtube.com/v/ePXlkqkFH6s&hl=en&fs=1&" 
     type="application/x-shockwave-flash" 
     allowscriptaccess="always" 
     allowfullscreen="true" 
     width="425" height="344"></embed> 
</object> 

Il devient seulement cela dans l'IE DOM:

<embed src="http://www.youtube.com/v/ePXlkqkFH6s&hl=en&fs=1&" 
    type="application/x-shockwave-flash" 
    allowscriptaccess="always" 
    allowfullscreen="true" 
    width="425" height="344"></embed> 

Pour obtenir un film à mettre à jour dans IE, je devais faire IE à réanalyser la HTML pour l'intégration Ce qui suit a semblé fonctionner:

var placeHolder = $("<div />"); 
var tempParent = $("<div />"); 
var embed = $("#movieparent embed"); 
embed.replaceWith(placeHolder); 
tempParent.append(embed); 
embed.attr("src", newSrcUrl); 
placeHolder.replaceWith(tempParent.html()); 
+0

C'est bon. Je suis allé aussi "en haut" à l'élément d'objet, pour remplacer le param de film, aussi bien que le embed src. – goodeye

5

Après la recherche d'informations, il semble que vous ne pouvez pas modifier dynamiquement les attributs de l'élément param de façon dynamique. Le plus simple sera probablement d'extraire le code HTML de l'élément dans une variable, de le renvoyer dans jQuery et d'utiliser des sélecteurs CSS sur cette variable. Ensuite, vous pouvez effacer l'objet et le remplacer par le nouveau code.

var url = (url here); 
var code = $("#embedded").html(); 
var newcode = $("param:first", code).attr("src", url).html(); 
$("#embedded").html(newcode); 

ou quelque chose comme ça ...;)

0

J'ai une solution comme ceci:

var flashhtml = $("object").html(); 
$('object').before("<div id='mydiv'>... div</div>"); 
$('object').remove(); 
var flashattr = 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="583" height="297">'; 
$('#mydiv').html('<object ' + flashattr + '<param name="wmode" value="transparent">' + flashhtml + '</object>'); 
Questions connexes