Javascript到Flash通信不起作用
我正试图通过javascript控制flash播放器,
我按照我在互联网上看到的那样做了一个“不支持”的错误
这里我写的:
在js上:
function getFlashMovieObject(movieName)
{
if (window.document[movieName])
{
return window.document[movieName];
}
if (navigator.appName.indexOf("Microsoft Internet")==-1)
{
if (document.embeds && document.embeds[movieName])
return document.embeds[movieName];
}
else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
{
return document.getElementById(movieName);
}
}
function SetNum1()
{
var x=getFlashMovieObject("flashmovie");
x.Setvariable("z0", "Z0");
//document.getElementById("flashmovie").setVariable("z0", "Z0");
alert("hi");
}
在HTML上:
<object id="flashmovie" width="40" height="300">
<param name="movie" value="complex Ex A2P.swf">
<embed src="complex Ex A2P.swf" width="400" height="300">
</embed>
</object>
注意:我尝试了“Setvariable”,“setvariable”,“SetVariable”和“setVariable”(大写字母的差异)
没有找到相关结果
已邀请:
2 个回复
蹄渭信妥扳
- 最简单的方法是将脚本放在
标签之前。 此外,您需要确保在AS代码中启用了
功能:
缔恃钨
在嵌入代码中。如果这不起作用,请尝试在javascript中注销该函数以确保它在调用之前存在
如果您在控制台中看到未定义,则可能存在排序问题,并且需要更改执行顺序以确保您的swf存在并且在调用之前添加了回调。在初始化的那一瞬间发生了很多事情,你想确保事情以正确的顺序发生。 最后,如果这仍然不起作用,可能存在安全问题,您可以通过添加快速修复
在您的类定义(或您存储代码的任何地方)下的actionscript中。如果最后一项修复了问题,您可能需要查看Security.allowDomain,尤其是在使用ExternalInterface时,您可能会担心跨站点脚本攻击。在大多数情况下,这很好,但是如果您的swf可以访问您的数据库,将被其他站点或您自己站点的应该是安全的区域加载,那么最终可能会非常糟糕,因此请仅使用上面的全局解决方案警告。