2010-12-15 57 views
2

是否可以在没有ExternalInterface的情况下使用Javascript单击/获取ActionScript值/动作?Javascript与Flash/ActionScript之间没有ExternalInterface的互动?

GreaseMonkey是如何工作的?我可以使用GreaseMonkey吗?

+0

几乎可以肯定你不能,但有其他接口,你可以使用它来创建宏与flash进行交互,谷歌的“附加宏firefox flash”或类似的东西 – yoda 2010-12-15 06:01:15

+0

但那些把黑客Flash游戏注入代码?看到这个http://userscripts.org/scripts/review/32886。我无法理解这部分var swf = document.embeds [0] || $(“flashcontent”)|| single(“// object [contains(@data,'.swf')]”); unsafeWindow.game = swf; var actions = single(“// div [@ class ='game_actions']”)|| single(“// div [@ class ='channeHolder']”)|| $(“header”)|| $(“content”)|| document.body的; – Rajasankar 2010-12-15 10:27:44

回答

1

这是相当辛苦,但也许可以实现LocalConnectionNetStream直接连接(使用send()法)在javascript :)

的另一种方法是使用的东西作为将通过SWF和JavaScript来检查的缓冲区每隔一段时间。一个简单的PHP脚本将是一个很好的缓冲,也或许这个数据可以经过#

和其他有趣的想法被存储在浏览器的地址栏中:你可以开发一个SWF信使,将在每次你需要传递时加载一条消息闪烁​​。消息作为获取变量传递给信使,它将创建一个LocalConnection,其中包含主要的swf并传递数据。但是从Flash调用JS的唯一方法是navigateToURL也许sendToURL

2

怎么样

swf=document.embeds[0];//or 1 or 2 etc 
swfvar1=swf.GetVariable("swfvariable"); 
swfvar2="something"; 
swf.SetVariable("swfvariable",swfvar2); 

其 的getVariable( “swfvar”); var name作为字符串 和 SetVariable(“swfvar”,jsval); 与swfvar的字符串名字和任何你想要的

执行功能的JS值,在使用上面的代码使用var SWF, swf.SwfFunc(PARAMS)2种方式 1; 简单吧?是。

2.again with code above swf.GetVariable(“SwfFunc(params)”); 因为它获得函数的值,所以它执行所有的操作以查找返回值,如果参数带有重叠引号的丑陋可能会很糟糕,因为在调用中已经有引号

个人,我喜欢方法2因为它也可以用于其他目的,例如执行代码。这样

swf.GetVariable(" 
function(){ 
//whatever 
}"); 

我觉得这是非常有用的,但要记住,你必须逃脱报价在功能 它实际上就像是注入eval语句,但更好的

相关问题