是否可以在没有ExternalInterface的情况下使用Javascript单击/获取ActionScript值/操作?
GreaseMonkey的工作原理是什么?我可以使用GreaseMonkey吗?
答案 0 :(得分:2)
怎么样
swf=document.embeds[0];//or 1 or 2 etc
swfvar1=swf.GetVariable("swfvariable");
swfvar2="something";
swf.SetVariable("swfvariable",swfvar2);
其 的getVariable( “swfvar”); 将var名称作为字符串 和 SetVariable( “swfvar”,jsval); 将swfvar名称作为字符串,将js值作为任何你想要的值
执行功能,有2种方式 1.使用var swf上面的代码, swf.SwfFunc(PARAMS); 简单吧?是
2.使用上面的代码 swf.GetVariable( “SwfFunc(PARAMS)”); 因为它获取了函数的值,所以它执行它以查找返回值,如果params丑陋且重叠引号可能会很糟糕,因为调用中已有引号
就个人而言,我喜欢方法2,因为它也可以用于其他目的,比如执行代码。像这样
swf.GetVariable("
function(){
//whatever
}");
我发现这非常有用,但请记住你必须在该函数中转义引号 它实际上就像注入一个eval语句,但更好
答案 1 :(得分:1)
它很难但可能在javascript中实现LocalConnection
或NetStream
直接连接(使用send()
方法)。
另一种方法是使用某些东西作为缓冲区,每隔一段时间由SWF和javascript检查。一个简单的PHP脚本将是一个很好的缓冲区,也许这些数据可以存储在浏览器地址栏中 #
还有一个有趣的想法:你可以开发一个SWF信使,每次你需要将信息传递给flash时都会加载。消息作为get变量传递给messenger,它将创建一个带有主swf的LocalConnection
并在那里传递数据。但是从flash调用js的唯一方法是navigateToURL
或者sendToURL