What I have:
- SWF exports a function via ExternalInterface
- Javascript creates a new embed object and adds it to the document
- Flash calling functions work fine in other browsers
- Flash function call will not be executed in IE 8
An example of exporting functions in swf:
flash.external.ExternalInterface.addCallback("isActive", ...
An example of creating an embed object:
var b = document.createElement('embed'); b.type = 'application\u002fx-shockwave-flash'; b.setAttribute('allowFullScreen', 'true'); b.setAttribute('allowNetworking', 'all'); b.setAttribute('allowScriptAccess', 'always'); b.width = 500; b.height = 400; b.src = 'assets\u002fUltra4.UltraApplication\u002fUltra4.UltraApplication+UltraSprite.swf';
An example of invoking the Flash frontend in javascript:
try { e = b.isActive(); } catch (__exc){ }
In IE, he will catch the message "Object does not support this property or method"
How to fix it?
In the script debugger, I see a third-party script that should be a bridge:
function __flash__arrayToXML(obj) { var s = "<array>"; for (var i=0; i<obj.length; i++) { s += "<property id=\"" + i + "\">" + __flash__toXML(obj[i]) + "</property>"; } return s+"</array>"; } function __flash__argumentsToXML(obj,index) { var s = "<arguments>"; for (var i=index; i<obj.length; i++) { s += __flash__toXML(obj[i]); } return s+"</arguments>"; } function __flash__objectToXML(obj) { var s = "<object>"; for (var prop in obj) { s += "<property id=\"" + prop + "\">" + __flash__toXML(obj[prop]) + "</property>"; } return s+"</object>"; } function __flash__escapeXML(s) { return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'"); } function __flash__toXML(value) { var type = typeof(value); if (type == "string") { return "<string>" + __flash__escapeXML(value) + "</string>"; } else if (type == "undefined") { return "<undefined/>"; } else if (type == "number") { return "<number>" + value + "</number>"; } else if (value == null) { return "<null/>"; } else if (type == "boolean") { return value ? "<true/>" : "<false/>"; } else if (value instanceof Date) { return "<date>" + value.getTime() + "</date>"; } else if (value instanceof Array) { return __flash__arrayToXML(value); } else if (type == "object") { return __flash__objectToXML(value); } else { return "<null/>";
dom internet-explorer flash
zproxy
source share