• flash player往页面注入的脚本表现了adobe的临时工水平


    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, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").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等同学的)掉这几个函数并不为难,最多就是为之难受罢了。

  • 相关阅读:
    Python基础——内置函数
    HHKB Mac快捷键使用
    解决EditText在ListView Item中,第一次点击无法获取焦点问题
    Android 设置Spinner默认显示文字
    IOS-静态Cell
    android-创建流式布局,并修改最后一行的最后一个view
    最简单的设置ExitText只能输入数字和字母的方法
    Android studio私人常用快捷键(持续更新)
    IOS-NSNotification(通知)
    Android书单(持续更新)
  • 原文地址:https://www.cnblogs.com/stonehuang/p/6603196.html
Copyright © 2020-2023  润新知