2012-05-03 3 views
12

Javascriptを使ってFlash Object/Embedsを編集する方法はいくつかありましたが、IE以外ではうまくいくように見えます。あなたがオブジェクトを編集することを許可していないブラウザ。この例は、次のようになります。IEはフラッシュオブジェクトの操作を許可しない唯一のブラウザ(またはバージョン)ですか?

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

や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); 

近代的なブラウザとそれらの最も使用されるバージョンのすべての残りの部分は編集のこの種をサポートしない場合、私はちょうどよIEをスクラップする。私がSWFObject JS Frameworkの洪水を受ける前に、私は私の人口統計を含むとは思わないブラウザのための巨大なフレームワークを含めるつもりはありません。

JSFiddle

ここに私が作成したJSFiddleへのリンクです。これはIE8以外のすべてのブラウザで動作します。

+0

それをテストし、それに何のIE8を持っていません。おそらく、ライブラリ全体をロードする追加のオーバーヘッドを追加することなく、使用している修正プログラム/プロシージャを使用できますか? – m90

+0

拡張子が.swfのsrcと値を変更するだけです。 – littlealien

+0

私はIE8がSWFファイルをリロードしないと思うので、あなたの新しいパラメータはムービーには届きません。 srcも変更してみてください。 – HerrSerker

答えて

8

のActionScript 3でそれらを使用する私はあなたのコードの<param>一部が<object>のためであると考えているの詳細については、thisの記事を見てください。

embedの名前と値のペアも渡す必要があります。

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

    //and so on... 
    }); 

私はSWFObjectを使用しますが、それは業界標準であり、非常に堅牢で、ウェブサイトにFlashを埋め込む最良の方法です。

0

ご質問やご使用目的を理解していれば、これが私の提案するものです。

私はSWFをHTMLページに埋め込むためにSWFObjectを使用します。そこから、SWFにflashVars(カスタム値を設定できるObject)を渡すことができます。これを実装するのはそれほどの努力ではなく、使い方もよりクリーンです(私の意見では)。 flashVarsの値は、PHP値で簡単に設定することも、プレーン値で設定することもできます。

はSWFObjectとFlashVarsを、どのように

+0

"SWFObject JS Frameworkの洪水が発生する前に、私は私の人口統計を含むとは思わないブラウザ用の巨大なフレームワークを含めるつもりはありません。 〜私の質問の最後の段落。 –

0

Hmmm ...奇妙なことに、DOMはI​​E8では正しく更新されませんでした。 これは動作するコードです。それは醜いですし、最適化の余地があります:

<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

あなたはこのような何かを試すことができます...

http://jsfiddle.net/eH8cK/

あなたが実際にあなたがすでに内容のほとんど大部分を書き換えているプレイヤーの全体の内容を書き換えることができます。

動作しているかどうか教えてください。おかげ

0

は、私はそれをキャッチすることは非常に困難だった、私のプロジェクトの一つでIE8でこれは本当に奇妙なバグがありました - それはcanvas要素がinnerHTMLを使用しての代わりに、document.createElement/document.appendChildを使用して追加された場合、Googleのexcanvasが失敗しました。

innerHTMLを使用して作成したすべてのcanvas要素を取り除き、DOMのcreateElementメソッドを使用して再作成しました。

私はIE8の他の「インタラクティブ」要素にも同様の問題があることに気づいたので、これを試してみることをお勧めします。

私はあなたがソースコードを見て、彼らはIE8のユーザーの要求を満たす方法を見るのは興味深いかもしれませんSWFObjectを使用する必要はありませんが、ここではtry it on jsfiddle

関連する問題