12

私はJavascriptを介してFlashオブジェクト/埋め込みを編集する複数の方法を試しましたが、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フレームワークが殺到する前に、人口統計が含まれるとは思わないブラウザー用の巨大なフレームワークを含めるつもりはありません。

JSFiddle

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

4

6 に答える 6

8

<param>あなたのコードの一部はのためのものだと思います<object>

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

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

    //and so on...
    });

しかし、とにかくSWFObjectを使用します。これは業界標準であり、非常に堅牢であり、Webサイトにフラッシュを埋め込むための最良の方法です。

于 2012-05-10T12:42:00.300 に答える
0

私のプロジェクトの1つでIE8にこの非常に奇妙なバグがあり、それを見つけるのは非常に困難でした。/を使用する代わりにキャンバス要素を追加すると、Googleのexcanvasが失敗しましinnerHTMLた。document.createElementdocument.appendChild

を使用して作成されたすべてのcanvas要素をinnerHTML取得し、DOMのcreateElementメソッドを使用してそれらを再作成することで修正しました。

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

テストするIE8はありませんが、ここではjsfiddleで試してみてください

于 2012-05-12T00:20:09.380 に答える
0

私があなたの質問と使用目的を理解しているなら、これは私が提案することです。

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

SWFObjectとFlashVarsの詳細、およびActionScript 3でそれらを使用する方法については、この記事を参照してください

于 2012-05-06T17:04:52.493 に答える
0

私が知っているSWFObjectの唯一の適切な代替手段は、3.6k縮小された(圧縮された場合はそれより少ない)jQueryToolsFlashembedプラグインです。

http://jquerytools.org/demos/toolbox/flashembed/index.html

ダウンロードリンク: http: //jquerytools.org/download/ 唯一の依存関係はjQuery自体です。

于 2012-05-10T13:27:36.223 に答える
0

うーん...奇妙なことに、IE8ではDOMが正しく更新されませんでした。これは機能するコードです。それは醜く、最適化の余地はたくさんあります。

<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はこちら

于 2012-05-10T22:52:15.643 に答える
0

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

http://jsfiddle.net/eH8cK/

すでにほとんどのコンテンツを書き換えている場合は、実際にプレーヤーのコンテンツ全体を書き換えることができます。

うまくいくかどうか試してみてください。ありがとう

于 2012-05-11T05:46:44.663 に答える