我有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>
答案 0 :(得分:1)
就像一个魅力,你的代码没有错误
但问题不在于值没有被更改,而是flash对象不知道更改。它只是在页面加载时实例化,并且不再与html代码链接。您将不得不重写我认为的整个对象块(使用document.write,或者如果您想亲自使用jquery或任何其他库)
答案 1 :(得分:1)
简而言之:是的,可以使用Javascript更改任何HTML-Elements值。但我想,这可能对你预期的方式没有帮助。
Flashplayer对象很可能只会在第一次加载时查询params。因此,在flashplayer运行时更改参数可能不会影响其当前流。
但这也可以解决:
在第一页加载(隐藏)期间放置所有可用对象,将自动播放设置为false,根据需要隐藏/取消隐藏对象,并使用javascript触发启动。
不仅使用Javascript更改flashvars
元素,还根据需要动态生成“完整”Flashplayer对象。
直接修改flashplayers url,而不是params
...有创意:)
答案 2 :(得分:0)
这实际上是按原样运行(检查 here )。您的问题可能是Flash对象已经呈现并且不会使用更改的值,因此您需要在更改值后“重新加载”它。
document.getElementsByName("flashvars")[0].value = 'newvalue';