10

wmodeJqueryまたは同様のライブラリを使用せずにメニューを非表示にしないように、任意のフラッシュオブジェクトを外部jsファイルから透明に変更する必要があります。

FFではgetElementsByTagName("embed")、属性を使用して設定します。うまくいきそうです。

具体的には、IE7 でライブラリobjectによる設定に問題があります。swfObject

swfObjectiE7 で次のコードを作成します。

<OBJECT id=mymovie height=400 width=134 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000>
        <PARAM NAME="_cx" VALUE="3545">
        <PARAM NAME="_cy" VALUE="10583">
        <PARAM NAME="FlashVars" VALUE="">
        <PARAM NAME="Movie" VALUE="imgs/site/tower.swf">
        <PARAM NAME="Src" VALUE="imgs/site/tower.swf">
        <PARAM NAME="WMode" VALUE="Window">
        <PARAM NAME="Play" VALUE="0">
        <PARAM NAME="Loop" VALUE="-1">
        <PARAM NAME="Quality" VALUE="High">
        <PARAM NAME="SAlign" VALUE="">
        <PARAM NAME="Menu" VALUE="-1">
        <PARAM NAME="Base" VALUE="">
        <PARAM NAME="AllowScriptAccess" VALUE="">
        <PARAM NAME="Scale" VALUE="ShowAll">
        <PARAM NAME="DeviceFont" VALUE="0">
        <PARAM NAME="EmbedMovie" VALUE="0">
        <PARAM NAME="BGColor" VALUE="FFFFFF">
        <PARAM NAME="SWRemote" VALUE="">
        <PARAM NAME="MovieData" VALUE="">
        <PARAM NAME="SeamlessTabbing" VALUE="1">
        <PARAM NAME="Profile" VALUE="0">
        <PARAM NAME="ProfileAddress" VALUE="">
        <PARAM NAME="ProfilePort" VALUE="0">
        <PARAM NAME="AllowNetworking" VALUE="all">
        <PARAM NAME="AllowFullScreen" VALUE="false">
</OBJECT>

wmodeフラッシュを設定して、フローティングオブジェクトを非表示にしないようにするためのあらゆる方法を試しtransparentましたが、これに限定されません。

  1. を検索しOBJECTて変更PARAM wmodetransparentます。
  2. Object( wmode=transparent)の属性を設定
  3. objectSetValue関数を呼び出します

どれも機能していないようです。wmode が変更されたように見えますが、Flash はまだ high の他のオブジェクトを隠していますz-index。ここで何が欠けていますか?

4

5 に答える 5

10

私はこの小さなトリックで成功しました:

$("embed").attr("wmode", "opaque").wrap('<div>');

それはフラッシュオブジェクトを効果的に再描画し、私にとってはうまくいきました。

于 2009-12-27T14:12:24.337 に答える
3

一般的にCirdayのソリューションは正しいものです。IE、FF、Chrome で動作する jQuery 以外のバージョンを次に示します。

var embed = document.getElementsByTagName('embed');
for(var i = 0; i < embed.length; i++){
    embed[i].setAttribute('wmode','opaque');
}
// FF does a "live" array when working directly with elements,
// so "els" changes as we add/remove elements; to avoid problems
// with indexing, copy to a temporary array
var els = document.getElementsByTagName('object');
var obj = [];
for(var i = 0; i < els.length; i++){
   obj[i] = els[i];
}
for(var i = 0; i < obj.length; i++){
    var param = document.createElement('param');
    param.setAttribute('name','wmode');
    param.setAttribute('value','opaque');
    obj[i].appendChild(param);

    var wrapper = document.createElement('div');
    obj[i].parentNode.appendChild(wrapper);

    if(obj[i].outerHTML){
        // IE
        var html = obj[i].outerHTML;
        obj[i].parentNode.removeChild(obj[i]);
        wrapper.innerHTML = html;
    }else{
        // ff/chrome
        obj[i].parentNode.removeChild(obj[i]);
        wrapper.appendChild(obj[i]);
    }
}
于 2011-12-22T18:12:00.160 に答える
2

SWFObject を使用してフラッシュを含める場合、embedSWF メソッドに「params」というパラメーターが必要です。次のようにオブジェクトを渡します。

swfobject.embedSwf(blah,blah,blah, { wmode:'transparent'});

詳細はこちら

于 2009-02-10T22:24:21.823 に答える
0

実行時に wmode パラメータを変更できないことはほぼ 100% 確信しています。つまり、技術的にはできますが、効果はありません。あなたが成功した試みをしたことに、私は実際に驚いています。どのバージョンの Flash Player とブラウザを試してみたら成功しましたか?

私の主張を証明する公式リンクが見つからなくて申し訳ありませんが、wmode の仕組みに関する非常に興味深いリンクを残しておきます (プレーヤー 10 に更新)。

GPU アクセラレーションとはどういう意味ですか?

乾杯、

ファン

于 2009-02-11T09:43:49.087 に答える