2012-05-03 7 views
12

He intentado varias formas de editar Objetos/Inserciones Flash a través de Javascript y parece funcionar en todo menos en IE, así que estoy pensando simplemente en lanzar IE fuera de la ventana para esta aplicación a menos que haya una versión más antigua + usada de otra navegadores que tampoco te permiten editar objetos. Un ejemplo de esto sería:¿Es IE el único navegador (o versión) que no permite la manipulación de objetos Flash?

document.getElementById(divID).innerHTML = '<object ...><embed ...><\/embed><\/object>'; 

o en jQuery

var params = '<param name="allowFullScreen" value="true" />' + 
      '<param name="allowScriptAccess" value="always" />' + 
      '<param name="allowNetworking" value="all" />' + 
      '<param name="movie" value="player.swf" />' + 
$("#objectPlayer").html(params); 

Si todo el resto de los navegadores modernos y las versiones más utilizadas de ellos sí apoyan este tipo de edición a continuación, sólo voy chatarra IE. Y antes de tener inundaciones del SWFObject JS Framework, no voy a incluir un marco enorme para un navegador que no creo que vaya a contener mi demografía.

jsFiddle

Aquí hay un enlace a un JSFiddle creé. Funciona en todos los navegadores, pero IE8

+0

Aunque usted no desea utilizar SWFObject que podría ser interesante para mirar el código fuente y ver cómo se atienden a los usuarios de IE8. Tal vez puedas usar el arreglo/procedimiento que están usando sin tener que agregar la sobrecarga adicional de cargar toda la biblioteca. – m90

+0

simplemente cambie src y el valor que contiene la extensión .swf. – littlealien

+0

Creo que el IE8 no volverá a cargar el archivo SWF, por lo que sus nuevos parámetros no llegarán a la película. Intenta cambiar el src también. – HerrSerker

Respuesta

8

Creo que la parte <param> de su código es para <object>.

Debes pasar los pares de nombre/valor para embed también.

$("#objectPlayer embed").attr({ 
    "src": "fileName.swf", 
    "name": "fileName", 
    "allowFullScreen": "true", 
    "width": 200, 
    "height": 100, 
    "type": "application/x-shockwave-flash" 

    //and so on... 
    }); 

Pero me gustaría utilizar SWFObject de todos modos, que es el estándar de la industria, es bastante robusto y es la mejor manera de incrustar flash en la página web.

0

Si entiendo su pregunta y propósito de uso, esto es lo que sugeriría.

Haría uso de SWFObject para incrustar su archivo SWF en su página HTML. Desde allí, puede pasar flashVars (Objeto donde puede establecer valores personalizados) a su SWF. No es un gran esfuerzo implementar esto y su uso es más limpio (en mi opinión). Los valores de los flashVars se pueden establecer fácilmente con valores PHP o llenarlos con valores simples.

Tenga una mirada en this artículo para obtener más información sobre SWFObject y variables de Flash y cómo utilizarlos en ActionScript 3.

+0

"Y antes de tener inundaciones de SWFObject JS Framework, no voy a incluir un marco enorme para un navegador que no creo que vaya a contener mi demografía". ~ Último párrafo de mi pregunta. –

0

Hmmm ... extraño, el DOM no se actualizaría correctamente en IE8. Este es el código de trabajo. Es feo y no hay mucho espacio para la optimización:

<div id="player"> 
<a href="javascript: void(0)" onclick="build()">Click Me!</a><br /> 
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" type="application/x-shockwave-flash" id="twitchTV" width="600" height="368" style="margin:0px;padding:0px"> 

    <param name="movie" value="http://www.twitch.tv/widgets/live_embed_player.swf?channel=day9tv" /> 
    <param name="quality" value="high" /> 
    <param name="bgcolor" value="#ffffff" /> 
    <param name="allowFullScreen" value="true" /> 
    <param name="allowScriptAccess" value="always" /> 
    <param name="allowNetworking" value="all" /> 
     <embed src="http://www.twitch.tv/widgets/live_embed_player.swf?channel=day9tv" quality="high" bgcolor="#ffffff" width="600" height="368" 
    name="videoplayer" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed> 
    </object>  

</div> 

JS:

function build(){ 
    // Usually the channels are vars, but this is simplified. 
    var data = 'http://www.twitch.tv/widgets/live_embed_player.swf?channel=lzgamertv'; // Object Data 
    var html = '<a href="javascript: void(0)" onclick="build()">Click Me!</a><br /><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" type="application/x-shockwave-flash" id="twitchTV" width="600" height="368" style="margin:0px;padding:0px"><param name="movie" value="'+data+'" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><embed src="'+data+'" quality="high" bgcolor="#ffffff" width="600" height="368" name="videoplayer" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object>'; 


    $("#player").html(""); 
    $("#player").append(html); 


} 

JSFiddle is here

0

Usted puede intentar algo como esto ...

http://jsfiddle.net/eH8cK/

En realidad se puede volver a escribir el contenido completo del jugador cuando ya están reescribiendo casi la mayor parte de los contenidos.

Por favor, intente y hágame saber si funciona. Gracias

0

tuve este error muy raro con IE8 en uno de mis proyectos, que era muy difícil de atrapar - hizo excanvas de Google fallan si se añadieran los elementos lienzo con la innerHTML lugar de utilizar el document.createElement/document.appendChild.

Lo arreglé tomando todos los elementos canvas que se crearon usando el innerHTML, y los realicé de nuevo usando el método DOM createElement.

He notado problemas similares con otros elementos "interactivos" en IE8, por lo que le sugiero que pruebe esto.

que no tengo IE8 para probarlo, pero aquí, try it on jsfiddle

Cuestiones relacionadas