Get ExternalInterface definitions in Javascript

雨燕双飞 提交于 2019-11-30 07:09:12

Just hit this question, a tad to late it seems, but I'll post an answer anyways ;) Using IE10 (windows 7) it worked perfectly fine for me to list all my methods like so:

var obj = document.getElementById('flashObj');
for(var prop in obj){
  var fx = obj[prop];
  if(obj.hasOwnProperty(prop) && (typeof fx == 'function') && /eval\(instance/.test(fx)){
    console.log(prop)
  }
}

Note that this did not work in Chrome or Firefox and only with the exact regexp since IE10 does not report "native code" as the other browsers do.

The problem is even worse: the information is neither available in ActionScript. You register a new function as ExternalInterface.addCallback('foo', foo) and you can not list already registered callbacks.

Abhinav

Just a guess but see if it works. All the ExternalInterface functions should be defined in the global namespace. Try embedding the SWF in an HTML page and get all the Javascript functions defined for the page after the page has loaded. List of global user defined functions in JavaScript?

The list of functions should be those defined in the SWF file.

I guess the only way to go is to parse the SWF file bytecode and try to gather the calls to ExternalInterface.addCallback method.

http://www.google.com/search?q=parse+avm2

My instinct is no, ExternalInterface is essentially a black box, or black letter box, you poke things through and sometimes things come back, but you can't open the door to see what's inside.

Without documentation as to what's been exposed in the SWF, the only other suggestion is decompiling the swf to have a look at the source.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!