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, " & quot; " ).replace(/'/g, " & apos; " );
}
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 /> " ; //???
}
}
function __flash__addCallback(instance, name) {
instance[name] = function () {
return eval(instance.CallFunction( " < invoke name = / "" + name + " / " returntype = / " javascript/ " > " + __flash__argumentsToXML(arguments,0) + " </ invoke > " ));
}
}
function __flash__removeCallback(instance, name) {
instance[name] = null;
}
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, " & quot; " ).replace(/'/g, " & apos; " );
}
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 /> " ; //???
}
}
function __flash__addCallback(instance, name) {
instance[name] = function () {
return eval(instance.CallFunction( " < invoke name = / "" + name + " / " returntype = / " javascript/ " > " + __flash__argumentsToXML(arguments,0) + " </ invoke > " ));
}
}
function __flash__removeCallback(instance, name) {
instance[name] = null;
}
啥都甭说了,看看上面这几个“+=”,已经把啥都说了。刚看到youyee同学定位到一个严重性能瓶颈并表情上面把这段flash往页面里面注入的代码贴出来的时候,emu简直无法相信。
还好大家都是干这行的,在flash注入完上述脚本后再覆盖(一开始误为重载了,感谢jee等同学的)掉这几个函数并不为难,最多就是为之难受罢了。