Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    9

    [JS] Problema replaceChild internet explorer

    Ciao a tutti, è la prima volta che posto sul forum.
    ho una pagina con un layout a due colonne, in quella di sinistra inserisco il player di youtube tramite queste istruzioni

    codice:
    <div id="nameVideo">'.$videoName.'</div><div id="video">';
    $output.="<object type=\"application/x-shockwave-flash\" data=".$videoValue." width=\"425\" height=\"366\" id=\"eMovie\">
                     <param name=\"movie\" value=".$videoValue." id=\"pMovie\" />
                     <param name=\"allowScriptAcess\" value=\"sameDomain\" />
                     <param name=\"quality\" value=\"best\" />
                     <param name=\"wmode\" value=\"transparent\" />
                     <param name=\"scale\" value=\"showall\" />
                     <param name=\"FlashVars\" value=\"playerMode=embedded\" />
                    </object>";
    $output.='</div></div>
    la prima volta che si apre la pagina, imposto i valori del player e mi viene caricato correttamente. Il problema arriva quando dalla colonna di destra, dove c'è un menù dinamico, un utente sceglie un video da guardare, in quanto volevo ricaricare soltanto il player con i nuovi parametri e non tutta la pagina.
    Questo è il link del video che richiama la mia funzione javascript

    codice:
    //passo alla funzione l'indirizzo del video e il suo nome
    '.$nomeV[$i].'
    Questa è la funzione che ho creato per creare il player con i dati del nuovo video
    codice:
    function seeVideo(video,nome)
    {
    	document.getElementById('nameVideo').innerHTML = nome;
    	var player = document.getElementById('video');
    	if(document.createElement && document.getElementById && document.getElementsByTagName)
    	{
    		var object = document.createElement('object');
    		object.setAttribute('type','application/x-shockwave-flash');
    		object.setAttribute('data',video);
    		object.setAttribute('width','425');
    		object.setAttribute('height','366');
    		object.setAttribute('id','eMovie');
    		var param1 = document.createElement('param');
    		param1.setAttribute('name','movie');
    		param1.setAttribute('value',video);
    		param1.setAttribute('id','pMovie');
    		var param2 = document.createElement('param');
    		param2.setAttribute('name','allowScriptAcess');
    		param2.setAttribute('value','sameDomain');
    		var param3 = document.createElement('param');
    		param3.setAttribute('name','quality');
    		param3.setAttribute('value','best');
    		var param4 = document.createElement('param');
    		param4.setAttribute('name','wmode');
    		param4.setAttribute('value','transparent');
    		var param5 = document.createElement('param');
    		param5.setAttribute('name','scale');
    		param5.setAttribute('value','showall');
    		var param6 = document.createElement('param');
    		param6.setAttribute('name','FlashVars');
    		param6.setAttribute('value','playerMode=embedded');
    		
    		object.appendChild(param1);
    		object.appendChild(param2);
    		object.appendChild(param3);
    		object.appendChild(param4);
    		object.appendChild(param5);
    		object.appendChild(param6);
    		
    		player.appendChild(object);
    		player.replaceChild(object,player.childNodes[0]);
    	}
    }
    su FF funziona, mentre il problema arriva con IE dove player.replaceChild() non sostituisce il player, o meglio viene sostituito ma con un quadrato bianco.


    Ho ricercato sul forum per trovare una soluzione ma essendo alle prime armi con JS non sono riuscito ad adattare il mio script con le informazioni che ho trovato. Mi pare di aver intuito che nonostante su FF funzioni la soluzione che ho trovato non è la più corretta.

    Grazie in anticipo a chi mi potrà aiutare

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    benvenuto,
    se e' vero che si e' riusciti ad eliminare l' embed dall' xhtml, purtroppo via DOM sembrerebbe ancora essere necessario, appunto per il solo IE
    quindi, se procedi con i metodi del DOM, devi creare anche l' elemento <embed> e settarne i vari attributi
    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    9
    Ciao Xinod, grazie per la risposta
    inizialmente avevo provato codesta soluzione cioè con l'elemento <embed>, ma su IE mi continuava a dare "errore nella visualizzazione della pagina" mentre su FF funzionava correttamente.
    Comunque ho provato a modificare la funzione così
    codice:
    function seeVideo(video,nome)
    {
    	document.getElementById('nameVideo').innerHTML = nome;
    	var player = document.getElementById('video');
    	if(document.createElement && document.getElementById && document.getElementsByTagName)
    	{
    		if(document.all)
    		{
    			var object = document.createElement('object');
    			object.setAttribute('width','425');
    			object.setAttribute('height','366');
    			var param1 = document.createElement('param');
    			param1.setAttribute('name','movie');
    			param1.setAttribute('value',video);
    			var param2 = document.createElement('param');
    			param2.setAttribute('name','wmode');
    			param2.setAttribute('value','transparent');
    			var embed = document.createElement('embed');
    			embed.setAttribute('src',video);
    			embed.setAttribute('type','application/x-shockwave-flash');
    			embed.setAttribute('wmode','transparent');
    			embed.setAttribute('width','425');
    			embed.setAttribute('height','366');
    			object.appendChild(param1);
    			object.appendChild(param2);
    			object.appendChild(embed);
    		}else
    		{
    			var object = document.createElement('object');
    			object.setAttribute('type','application/x-shockwave-flash');
    			object.setAttribute('data',video);
    			object.setAttribute('width','425');
    			object.setAttribute('height','366');
    			object.setAttribute('id','eMovie');
    			var param1 = document.createElement('param');
    			param1.setAttribute('name','movie');
    			param1.setAttribute('value',video);
    			param1.setAttribute('id','pMovie');
    			var param2 = document.createElement('param');
    			param2.setAttribute('name','allowScriptAcess');
    			param2.setAttribute('value','sameDomain');
    			var param3 = document.createElement('param');
    			param3.setAttribute('name','quality');
    			param3.setAttribute('value','best');
    			var param4 = document.createElement('param');
    			param4.setAttribute('name','wmode');
    			param4.setAttribute('value','transparent');
    			var param5 = document.createElement('param');
    			param5.setAttribute('name','scale');
    			param5.setAttribute('value','showall');
    			var param6 = document.createElement('param');
    			param6.setAttribute('name','FlashVars');
    			param6.setAttribute('value','playerMode=embedded');
    		
    			object.appendChild(param1);
    			object.appendChild(param2);
    			object.appendChild(param3);
    			object.appendChild(param4);
    			object.appendChild(param5);
    			object.appendChild(param6);
    		}
    		
    		player.appendChild(object);
    		player.replaceChild(object,player.childNodes[0]);
    	}
    }
    niente, continua a dare il solito errore: "errore nella visualizzazione della pagina"
    Qualche idea? probabilmente ho sbagliato qualcos'altro
    Grazie ancora

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    non ho guardato il codice, pero' prova a non creare l' object e relativi param quando crei l' embed
    (quindi solo nel ramo per IE)

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    9
    Grazie adesso funziona!

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    di nulla

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.