0

私は ffmp3 埋め込みコードを持っていて、javascript で flashvars パラメータ値を変更しようとしましたが、それは可能ですか?

私はここまで来ましたが、運がありません:

 <a id="foo" href="#">Change Radio</a>

    <object width="205" height="109" bgcolor="#FFFFFF">
      <param name="movie" value="ffmp3-config.swf" />
      <param name="flashvars" value="Radio1" />
      <param name="wmode" value="transparent" />
      <param name="scale" value="noscale" />
      <embed src="ffmp3-config.swf" flashvars="url=Radio1" width="205" scale="noscale" height="109" wmode="transparent" bgcolor="none" type="application/x-shockwave-flash" />
    </object>

<script type="text/javascript">
    var foo = document.getElementById('foo');
    foo.onclick = function () {
        document.getElementsByName('flashvars')[0].value='Radio2';
    }
</script>
4

3 に答える 3

1

魅力のように機能し、コードに問題はありません

しかし、問題は値が変更されていないことではなく、フラッシュ オブジェクトが変更を認識していないことです。ページの読み込み時にインスタンス化されるだけで、html コードとのリンクはもうありません。オブジェクトブロック全体を書き直す必要があると思います(document.writeを使用するか、自分に親切にしたい場合はjqueryまたはその他のライブラリを使用します)

于 2013-07-18T08:55:19.807 に答える
1

要するに: はい、Javascript を使用して HTML 要素の値を変更することは可能です。しかし、これはあなたが期待する方法であなたを助けないかもしれないと思います.

Flashplayer オブジェクトは、最初にロードされたときにパラメーターのみを照会する可能性が最も高いです。したがって、flashplayer の実行中にパラメーターを変更しても、現在のストリームには影響しない可能性があります。

しかし、これも解決できます:

  • 最初のページの読み込み中にすべての利用可能なオブジェクトを配置 (非表示) し、自動再生を false に設定し、必要に応じてオブジェクトを非表示/再表示し、javascript を使用して開始をトリガーします。

  • Javascript を使用して要素を変更するだけでなくflashvars、必要に応じて「完全な」Flashplayer オブジェクトを動的に生成します。

  • パラメータの代わりに、FlashPlayer の URL を直接変更します。

  • ... クリエイティブに :)

于 2013-07-18T08:55:45.147 に答える
0

これは実際にはそのまま機能します (ここを確認してください)。問題は、Flash オブジェクトが既にレンダリングされており、変更された値を使用しない可能性があるため、値を変更した後に「再ロード」する必要があることです。

document.getElementsByName("flashvars")[0].value = 'newvalue';
于 2013-07-18T08:54:23.043 に答える