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

就像一个魅力,你的代码没有错

但问题不在于该值没有被更改,而是 flash 对象不知道这些更改。它只是在页面加载时实例化,并且不再与 html 代码链接。你必须重写我认为的整个对象块(使用 document.write,或者如果你想对自己好一点,使用 jquery 或任何其他库)

于 2013-07-18T08:55:19.807 回答
1

简而言之:是的,可以使用 Javascript 更改任何 HTML-Elements 值。但我想,这可能无法以您期望的方式帮助您。

Flashplayer 对象很可能只在第一次加载时查询参数。因此,在 flashplayer 运行时更改参数可能不会影响其当前流。

但这也可以解决:

  • 在第一个页面加载(隐藏)期间放置所有可用对象,将自动播放设置为 false,根据需要隐藏/取消隐藏对象,并使用 javascript 触发启动。

  • 不仅flashvars使用 Javascript 更改元素,而且根据需要动态生成“完整的”Flashplayer 对象。

  • 直接修改flashplayers url,而不是params

  • ...有创意:)

于 2013-07-18T08:55:45.147 回答
0

这实际上是按原样工作的(检查here)。您的问题可能是 flash 对象已经渲染并且不会使用更改的值,因此您需要在更改值后“重新加载”它。

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