J'ai le scénario suivant.
i Montrez à l'utilisateur certains fichiers audio du serveur. L'utilisateur clique sur un, puis sur OnfilesElue est finalement exécuté avec le dossier et le fichier sélectionné. Quelle est la fonction change la source de l'objet incorporé. Donc, d'une manière, c'est un aperçu du fichier sélectionné avant de l'accepter et de sauvegarder le choix de l'utilisateur. une aide visuelle . p>
html p> XXX PRE>
JavaScript P>
function onFileSelected(file, directory) { jQuery('embed#audio_file').attr('src', '/resources/audio/'+directory+'/'+file); };
7 Réponses :
Vous devez supprimer l'élément La meilleure chose à faire est de supprimer l'objet existant incorporer code> et réinjecter-le avec le nouveau paramètre code> SRC code>. p>
incorporé code> Comme
objet code> et similaire sont deux éléments qui, étant dus leurs utilisations spéciales (vidéo, audio, flash, activeX, ...), dans certains navigateurs sont géré différemment d'un élément DOM normal. Modifiant ainsi l'attribut SRC pourrait ne pas déclencher l'action que vous attendez. P>
incorporer code> un réinsérer. Si vous écrivez une sorte de fonction wrapper avec l'attribut SRC comme paramètre, il faut être facile p>
J'ai essayé ça, mais cela ne fonctionnait pas d'une manière ou d'une autre. Il a annexé la nouvelle étiquette d'intégration, mais n'a pas retiré l'ancien. Je pense utiliser une variation de celui-ci avec un iframe, mais ce n'est pas une solution très élégante.
Mon problème était que la modification de manière programmée par la SRC et l'appel de la pièce de théâtre () a toujours amené le SRC original à jouer. Suite à ce conseil, je supprime maintenant et ré-ajouter l'élément incorporé et le son joue correctement. Merci
jQuery suit la Déclaration CSS-Esque:
au lieu de faire p> plutôt p> que Way, JQuery ne récupère que l'objet d'id = "audio_file". p> p>
Il me semble que votre sélecteur est "moins spécifique" et pourrait avoir un succès de performances plus élevé, ne peut pas vraiment voir la connexion à votre citation "Déclaration CSS-ESQUE" ... En plus, si vous lisez l'OP, cela fonctionne sur certains navigateurs Mais pas tous, donc ce n'est probablement pas une erreur de syntaxe ...
@Leon, JQuery groupa les différentes implémentations JavaScript dans leur bibliothèque afin que nous (développeurs) n'ayez pas à vous en soucier. Je pense que c'est l'utilisation interne des tags relatifs à certains navigateurs qui en conflit, afin que cela puisse être une erreur de syntaxe.
J'ai également été confronté au même problème lorsque je veux changer "SRC" -Attribute d'élément "incorporé", donc ce que j'ai fait, est donné ci-dessous: et cela fonctionnera bien Dans mon application. p> Conclusion: - Vous devez d'abord retirer l'élément d'intégration, puis vous devez la réinsérer avec le changement de SRC. P> P>
Il y a un bug en chrome, donnez-lui une étoile pour l'avoir réparé plus tôt: http://code.google.com/p/chromium/issues/detail?id=69648 p>
Ajouter div à Embed Tag,
var pdfId = document.getElementById("pdfId"); pdfId.removeChild(pdfId.childNodes[0]); var embed = document.createElement('embed'); embed.setAttribute('src', embedUrl); embed.setAttribute('type', 'audio/mpeg'); pdfId.appendChild(embed);
<embed id="element-embed" style="width:1100px; height: 700px;">
Ceci est un bogue en chrome. Une solution alternative est au lieu de changer SRC d'élément d'intégration, essayez de remplacer cloné incorporé avec le nouveau SRC