Ho il seguente scenario.JavaScript: modifica dell'attributo src di un tag embeddato
Mostrare all'utente alcuni file audio dal server. L'utente fa clic su uno, quindi onFileSelected viene infine eseguito con la cartella e il file selezionati. Che cosa fa la funzione è cambiare la fonte dall'oggetto incorporato. Quindi in un certo senso, è un'anteprima del file selezionato prima di accettarlo e salvare la scelta dell'utente. A visual aid.
HTML
<embed src="/resources/audio/_webbook_0001/embed_test.mp3" type="audio/mpeg" id="audio_file">
JavaScript
function onFileSelected(file, directory) {
jQuery('embed#audio_file').attr('src', '/resources/audio/'+directory+'/'+file);
};
Ora, questo funziona bene in Firefox, Safari e Chrome, ma semplicemente si rifiutano di cambiare la sorgente, indipendentemente dal sistema operativo.
jQuery trova l'oggetto (jQuery.size() restituisce 1), esegue il codice, ma nessuna modifica nel codice HTML.
Perché Safari mi impedisce di modificare la sorgente <embed>
e come posso eludere questa situazione?
Ci ho provato, ma non ha funzionato in qualche modo. Aggiunse il nuovo embed-tag, ma non rimosse quello vecchio. Sto pensando di usare una variante di questo con un iframe, ma questa non è una soluzione molto elegante. – Mike
Ho avuto un problema simile e questo ha funzionato per me. Grazie! – petejamd
Il mio problema era che la modifica di src e di chiamata play() al livello di programmazione causava comunque la riproduzione dell'originale src. Seguendo questo consiglio ora rimuovo e riaggiungi l'elemento embed e il suono viene riprodotto correttamente. Grazie – Scottm